在C++中,如果我可以直接将整数分配给指针而不使用"new",为什么要使用"new"?
In C++, why should I use "new" if I can directly assign an integer to the pointer without using "new"?
假设我的指针没有指向数组,这个块是怎么回事:
int *ptr_a;
ptr_a = new int;
*ptr_a = 1;
与以下产品相比不同:
int *ptr_a = 1;
内存分配是否有差异,何时使用一个而不是另一个?
int *ptr_a = 1;
不会创建新的int,这会创建一个指针ptr_a
并为其分配值1,这意味着该指针将指向地址0x00000001
。它不是一个整数。如果您稍后尝试将指针与*ptr_a = 2
一起使用,您将获得分段错误,因为指针不指向分配的内存空间(在这种情况下,它指向内核内存,这是一个禁忌(。
现在一个好的原则是使用std::unique_ptr<int> ptr_a = std::make_unique<int>(1)
它将分配值为1
的新int
,并在内存超出范围后ptr_a
释放内存。
相关文章:
- 在将 new 与指针一起使用时,创建数组的指定长度
- 在C++中,如果我可以直接将整数分配给指针而不使用"new",为什么要使用"new"?
- 传递给放置 new 的指针是否是指向其对象表示形式的非 UB 指针?
- 删除使用 new 创建的 2D 或 3D 指针
- 基类指针:在哪里使用 new 和 delete
- 双指针在使用 new 时不调用对象构造函数
- 'new'和'='与指针的区别
- 哪些资源是由智能指针管理的,而它们的内存不是由new分配的
- (C++)如何在不导致 mem 泄漏的情况下将指针传递到分配了'new'的函数?
- C++:为什么可以在没有事先使用 new 的情况下在指向结构的指针上使用 delete?
- 为什么运算符"new"需要指针才能工作?
- 将指针返回使用New创建的数组数组
- "new"不会将内存分配给作为类的数据成员的指针
- 带"new"的指针和带"&variable"的指针有什么区别
- 基于索引的 alloca 返回的指针访问和"placement new"的效果
- 将内存分配给 2D 数组时,“new int*[rowCount];”的含义是什么?是 2D 数组,是指向数组的指针数组
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 使用 malloc 而不是 new 会导致 free():指针错误无效
- 如何将一系列指针分配给Usinig New
- 如何将`new`用于数组的指针