动态分配内存
int num=1;
int arrays[10];
in *ptr_int = nwe int;//定义一个未命名变量
int *ptr_arrays = new int[10];//定义一个未命名数组
该段代码第3,4行分别动态定义了一个未命名变量和一个未命名数组。在运行阶段运行到该代码,计算机将为一个int值(变量或数组等需要定义的量)分配内存空间,是没有名字的,只是用ptr_int(ptr_arrays)指针指向该空间地址。所以,需要注意的是,定义时,该空间唯一标示就是它的指针,若此后对指针进行了算术运算,让指针指向了别处,本处的空间变量任然存在,但没有可以调用该空间的途径了,此时被称为内存泄露。故,应该特别注意,分配了动态内存并且使用完之后,记得用delete关键字进行释放内存。即以下代码:
delete ptr_int;//释放ptr_int指向的未命名变量。
delete [] ptr_arrays;//释放ptr_arrays指向的未命名数组。注意释放方式多了个中括号
动态分配的未命名内存只在运行时有效,编译时是不存在的。
int num[5];
int *nums =new int[5];
cout << sizeof(num) << "\t\t" << sizeof(nums);
上段代码运行结果为:20 4
注:
1.用new分配内存
指针的真正用武之地:在运行阶段分配未命名的内存用以存储值。
在此情况下