删除自动 int 变量
delete automatic int variable
我正在尝试学习C++的最佳习惯和实践,尤其是围绕内存管理。通过在我的iOS应用程序中使用ARC,Java中的内置GC以及其他一些启用了GC的语言,我在这方面被宠坏了。
我知道您使用delete
或delete[]
来解构指针。我的问题是,您如何delete
整数或其他基本数据类型的变量?
我的第一个想法是,由于delete
似乎只适用于指针,我可以这样做吗:
int intToDelete = 6;
delete &intToDelete;
所以基本上,你能创建一个指向内存中整数的指针,并使用该指针删除整数吗?
delete
和 delete[]
只能与分别使用 new
或 new[]
显式分配的指针一起使用。特别是,每次使用new
时,都应该有相应的delete
。同样,每个new[]
都需要相应的delete[]
。切勿将其中任何一个与未显式分配内存的变量一起使用。编译器负责所有非指针变量的内存分配(和释放)。
> delete
用于释放由new
运算符分配的堆内存,delete[]
是 new[]
的对应项。你不能使用 delete
释放不是由 new
分配的指针,即使是来自 malloc
的指针。
本地对象会自动清理。这是该语言最有用的功能之一,因为它也可以通过RAII扩展以涵盖非本地对象。具体来说,使用delete
是一个巨大的危险信号,表明您没有使用正确的自动清理工具,delete[]
更糟。
正确使用构造和销毁语义对于编写良好的C++代码至关重要。如果你手动管理内存,你就错了,除非你有一个笨拙的旧编译器或一些非常独特的情况(我从来没有见过任何例子来证明这一点)。
相关文章:
- 将布尔变量添加到 int
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- 在类 (C++) 之外设置 const int 成员变量
- 如何检查 int 变量是否包含合法(非陷阱表示)值?
- 将子字符串字符从字符串值转换为 int,然后将其分配给 int 变量
- 如何在传递给 C/C++ 宏之前解析 int 变量?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 什么是变量均值'int border = borderType & ~BORDER_ISOLATED'?
- 如何定义int[][26]类型的变量
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 声明具有两种类型的变量:"int char"
- 有没有办法"QByteArray"变量数据直接放入变量"int"而无需强制转换?
- 在 C++ 中,当我声明一个整数变量 int a = 200L 或 int a = 200F 或 int a = 200
- 试图在C++中打印变量int会导致它崩溃.为什么?
- 非常量指针是否可以修改常量变量int c++
- 在初始化中使用新声明的变量(int x=x+1)
- 如何在数组中按变量(int-最小到最大)对数组进行排序
- 如果我想将字符提升为 int,我应该使用 static_cast(char 变量<int>)还是 +(char 变量),为什么?