删除char类型数组

时间:2012-03-20 04:18:58

标签: c++ delete-operator

char * a = new char[];
a[0]='1';
delete []a;

我没有指定数组的大小,但是当我运行它时,它给出了一个调试错误。但是当我写下这段代码时如下:

char * a = new char[1];
a[0]='1';
delete []a;

然后就可以了。

当我指定一个数字时,任何人都可以告诉我为什么它会正确运行吗?

3 个答案:

答案 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;

但是不要忘记将[]用于删除数组。