如何计算一个vc程序需要多大的内存和什么cpu

如何计算一个vc程序需要多大的内存和什么cpu,第1张

酷睿i系列之前的intelCPU 由于没有集成内存控制器 CPU与内存的通讯受到FSB前端总线频率的限制 比如说1333Mhz的FSB 那么 最高的通讯频率就是1333Mhz 也就是 使用两个667Mhz的DDR2内存或者单通道的1333MhzDDR3内存正好满足需求 使用更高的频率内存不是不支持 而是没必要 因为会自动降频 以保证与CPU外频的一致性(DDR2,DDR3的标称频率不是实际频率 而是等效为DDR内存的频率 有2倍 4倍的关系 这里的与CPU外频一致 指的是实际频率与其一致)

而从i系列开始 Intel的CPU开始集成内存控制器 CPU与内存可以直接通讯了 取代FSB的是QPI总线 比如i7使用的QPI总线频率是64GT/s 非常高了 根本构不成瓶颈 所以对于目前市售的一般DDR3内存并不会有频率的限制 而且集成了内存控制器 内存访问的延迟大大降低 所以带来了内存访问速度的飞速提升

另外 AMD的U也集成内存控制器 对应的是HT总线

QPI和HT总线是可以超频的 以支援发烧级的内存

呵呵,在win32平台下,堆栈空间是有限的,如果你定义局部变量数组,容易造成堆栈溢出。解决方法有两个:用new动态分配,或者定义为静态的数组。

new在heap中分配空间,heap空间也是有限的,如果太大,new也会失败,这时你只能直接使用API函数直接分配虚拟内存。

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

在网上看到下面的文字:

------------------------------

char pchar = new char;

内存分一个字节给pchar(CD)再追加四个内存监视字节(FD FD FD FD)

所以现在实际的字节为(CD FD FD FD FD)

char pchar = new char[8];

实际相关内存为(CD CD CD CD CD CD CD CD FD FD FD FD)

分配了内存后,接受的字符不大于CD的个数就不会出错,如果大于的话,就会在内存校验时出错。

如果用cin的方式接受pchar不要忘记'\0'也占一个字符

--------------------------------

我用程序试验过,确实如此。

请问,为什么VC++要采用内存监视字节呢?

显然不可能仅仅为了标记分配内存的边界,因为内存单元是否被用可以利用内存分配表之类的数据结构来记录。否则,动态内存管理就极其不安全了。

解析:

内存分配表之类的数据结构

这才不安全呢,你都不知道什么时候建立这个结构,又由谁去释放。并且windows又是虚拟内存的,你的记录的内存指针可能又要换算,而且这种表一旦被冲内存冲掉找都找不回来

而且还有多线程地址切换问题

以上就是关于如何计算一个vc程序需要多大的内存和什么cpu全部的内容,包括:如何计算一个vc程序需要多大的内存和什么cpu、关于VC++申请大容量内存的问题、VC++内存分配问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10637596.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存