1. 动态内存分配:new 与 delete 运算符
在 C++ 编程中,动态内存分配是一项至关重要的技术,它允许我们在程序运行时根据实际需求分配和释放内存。new
运算符用于在堆内存中分配内存,delete
运算符则用于释放通过new
分配的内存。
当我们需要动态分配单个变量时,可以这样使用new
:
int *ptr = new int;
*ptr = 100;
这里new int
在堆内存中分配了一块存储int
类型数据的空间,并返回该空间的地址,赋值给ptr
。之后,通过*ptr
对这块内存进行赋值。
如果要动态分配一个数组,语法稍有不同:
int *arr = new int[10];
for (int i = 0; i < 10; ++i) {
arr[i] = i * 3;
}
new int[10]
在堆内存中分配了一个包含 10 个int
类型元素的数组,并返回数组首元素的地址给arr
。
使用完动态分配的内存后,必须及时释放,以避免内存泄漏。对于单个变量,使用delete
释放:
delete ptr;
对于动态分配的数组,则使用delete[]
:
delete[] arr;
注意,delete
和delete[]
的使用必须与new
和new[]
相对应,否则可能导致未定义行为。</