char * a = new char[];
a[0]='1';
delete []a;
我没有指定数组的大小,但是当我运行它时,它给出了一个调试错误。但是当我写下这段代码时如下:
char * a = new char[1];
a[0]='1';
delete []a;
然后就可以了。
当我指定一个数字时,任何人都可以告诉我为什么它会正确运行吗?
答案 0 :(得分:3)
char * a = new char[];
不分配任何内存。它甚至不是一个有效的陈述,至少应该导致错误或警告。
char * a = new char[1];
适用于单个字符,这就是您可以使用和删除它的原因。 new关键字需要分配内存量。
答案 1 :(得分:1)
使用new关键字时,表示要保留多少内存。
例如,当你说char *a = new char[1];
时,你说你需要一个可以容纳1个字符的数组。
在您发布的第一个声明中,您没有保留任何内存,这就是您的程序崩溃的原因。
答案 2 :(得分:0)
char * a = new char[];
您应该知道要分配多少内存,这应该在[]
但是对于删除,您不需要告诉数组的大小,运行时系统知道指针所指向的数组的大小a
delete []a;
但是不要忘记将[]
用于删除数组。