C分配的字节数多于询问的字节数?

C分配的字节数多于询问的字节数?,第1张

概述int main(int argc, const char* argv[]){ for(unsigned int i = 0; i < 10000000; i++) char *c = new char; cin.get();} 在上面的代码中,为什么我的程序使用471MB内存而不是10MB,正如人们所期望的那样? RAM的分配来自运行时库和 *** 作系统的共同努力
int main(int argc,const char* argv[]){    for(unsigned int i = 0; i < 10000000; i++)        char *c = new char;    cin.get();}

在上面的代码中,为什么我的程序使用471MB内存而不是10MB,正如人们所期望的那样?

解决方法 RAM的分配来自运行时库和 *** 作系统的共同努力.为了识别示例代码请求的一个字节,有一些结构可以向运行时标识这个内存.它有时是双链表,但它由 *** 作系统和运行时实现定义.

您可以通过这种方式进行类比:如果您有一个链表容器,您感兴趣的只是您放置在每个链接中的内容,但容器必须指向容器中的其他链接以便维护链表.

如果使用调试器或其他一些调试工具来跟踪内存,这些结构可能会更大,从而使每个分配成本更高.

RAM通常不是从数组中分配的,但可以重载新运算符以更改分配行为.它可能是从一个数组(在你的例子中是一个大的)中专门分配的,这样分配的行为就像你期望的那样,在某些应用程序中,这是控制内存和提高性能的特定策略(尽管细节通常更多)复杂而不是简单的插图).

总结

以上是内存溢出为你收集整理的C分配的字节数多于询问的字节数?全部内容,希望文章能够帮你解决C分配的字节数多于询问的字节数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1216917.html

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

发表评论

登录后才能评论

评论列表(0条)

保存