CPP-基础:C++的new int()与new int[]
编写一个List类:
class List { int length; //列表长度 int* lpInt; //列表指针 List(int size); ~List(); }
List::List(int size) { length = size; lpInt = new int(length); //关键点 int n; for(n=0;n<length;n++) { lpInt[n] = n; } } List::~List() { delete []lpInt; //出错,访问越界 }
在调试时,运行报错:
Debug Error!
Frogram: C:\Test\Debug\Test.exe
DAMAGE: after Normal block(#xxxx) at 0x00430040 (Press Retry to debug the application)
出错的原因:
lpInt = new int(length);
应该修改为:
lpInt = new int[length];
说明:
int* lpInt = new int(10)是分配一个int,也就是*lpInt = 10。
int* lpInt = new int[10]是分配10个int数组,lpInt是数组的首地址。