使用指针的内存分配与不使用指针的内存分配 < C++ > 下面两个代码之间的内存使用有什么不同吗? int *val = new int(5);

使用指针的内存分配与不使用指针的内存分配 < C++ > 下面两个代码之间的内存使用有什么不同吗? int *val = new int(5);,c++,pointers,memory,java,c#,C++,Pointers,Memory,Java,C#,及 是的,您的第一个示例需要至少sizeof(int*)(在自动存储中)+sizeof(int)(在动态存储中)。内存管理也可能带来开销 第二个示例只需要sizeof(int),根据其使用方式,最终可能会完全忽略(通过优化) “C++中的以下两个代码在内存使用方面有什么不同吗?” 当然,您的第一个示例会泄漏内存,除非您没有调用delete val在你不再需要它之后 关于第二个示例,您可能想了解这个习语(尽管只是处理简单的int值,所有这些结果都是微不足道的) 注释>代码>新< /COD>不按与I


是的,您的第一个示例需要至少
sizeof(int*)
(在自动存储中)+
sizeof(int)
(在动态存储中)。内存管理也可能带来开销

第二个示例只需要
sizeof(int)
,根据其使用方式,最终可能会完全忽略(通过优化)

“C++中的以下两个代码在内存使用方面有什么不同吗?”

当然,您的第一个示例会泄漏内存,除非您没有调用
delete val在你不再需要它之后

关于第二个示例,您可能想了解这个习语(尽管只是处理简单的
int
值,所有这些结果都是微不足道的)


注释>代码>新< /COD>不按与IN或语言相同的方式处理,没有垃圾收集器。< /P> @ SergeyA,您愿意解释一下C++ C++程序员的语句吗?我一直认为
bb()
是堆栈,
B*B=newb()
是堆。。。我错过什么了吗?谢谢,这很有帮助!:)
int val = 5;