使用指针VS不使用指针的内存分配

Memory allocation using pointer VS without using pointer

本文关键字:指针 分配 内存 VS      更新时间:2023-10-16

下面两个c++代码在内存使用方面有什么不同吗?

int *val = new int(5);

int val = 5;

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

你的第二个例子只需要sizeof(int),这可能最终被完全省略(通过优化)取决于它的使用方式。

"以下两个c++代码在内存使用方面有什么不同吗?"

当然,您的第一个示例泄漏内存,除非您不再需要delete val;后不再调用它。

您可能想要阅读关于第二个示例的RAII习惯用法(尽管只是处理简单的int值,所有这些结果都是微不足道的)。

注意c++ new的处理方式与java或c#语言不同,没有垃圾回收器