地址分类:
- 栈区:函数的形参,非静态的局部变量
- 堆区:用于程序运行时动态内存分配
C++中利用new操作符在堆区开辟数据
堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符delete
利用new创建的数据,会返回该数据对应的类型的指针
- new的用法
int* p=new int(10);
基本语法
int* fun() { int* a = new int(10); return a; } int main() { int* p = fun(); cout << *p << endl; delete p; return 0; }
- 在堆区利用new开辟数组
void test() { //创建10整形数据的数组在堆区 int* arr = new int[10]; //10代表数组有10个元素 for (int i = 0; i < 10; i++) { arr[i] = i + 10; //给十个元素赋值10~19 } for (int i = 0; i < 10; i++) { cout << arr[i] << endl; } //释放堆区数组 delete[] arr; //释放数组的时候,要加[]才可以 } int main() { test(); return 0; }
- delete
delete运算符使用的一般格式为
delete []指针变量
例如要撤销上面用new开辟的空间用
delete p;
上面我们用“new int[10];”开辟的数组空间,把new返回的指针赋给了指针变量arr,则应该用以下形式的delete运算符撤销该空间:
delete[] arr; //释放数组的时候,要加[]才可以