使用指针VS不使用指针的内存分配
Memory allocation using pointer VS without using pointer
下面两个c++代码在内存使用方面有什么不同吗?
int *val = new int(5);
和
int val = 5;
是的,您的第一个示例至少需要sizeof(int*)
(自动存储)+ sizeof(int)
(动态存储)。还可能存在内存管理方面的开销。
你的第二个例子只需要sizeof(int)
,这可能最终被完全省略(通过优化)取决于它的使用方式。
"以下两个c++代码在内存使用方面有什么不同吗?"
当然,您的第一个示例泄漏内存,除非您不再需要delete val;
后不再调用它。
您可能想要阅读关于第二个示例的RAII习惯用法(尽管只是处理简单的int
值,所有这些结果都是微不足道的)。
注意c++ new
的处理方式与java或c#语言不同,没有垃圾回收器
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- C++将一个指针分配给另一个指针时执行的类型检查
- 我似乎无法为指针分配一个数组,然后更改数组的内容
- C++为 void 指针分配一个字符串
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- MPI 集合通信中的指针分配
- 函数指针分配在创建 DLL 后导致错误
- 通过双指针分配指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 我可以直接为指针分配地址吗?如果是,如何做到这一点
- 为什么为char指针分配内存不会截断char序列
- C++指针分配字符数组的地址
- 将 void 指针分配给另一个 void 指针
- 如何将不同的成员函数指针分配给注册类的不同实例?
- 如何为指针分配特定的内存地址?
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 将指针分配给另一个指针时会发生什么情况?
- 为指向C++中的对象/对象的指针分配堆内存
- 将指针分配给字符串变量中包含的地址
- 当直接分配时,为什么此功能指针分配起作用,而不是与有条件的操作员一起使用