简单的问题:我必须delete
或delete []
c
?语言是否重要?
char c[] = "hello"
Gordon Wilso.. 12
在c ++中,不是动态内存分配.不需要delete[]
.
你的例子基本上是一个捷径:
char c[6]={'h','e','l','l','o','\0'};
Greg Hewgill.. 12
C++中的规则是您delete[]
在任何时候使用new[]
,delete
无论何时使用new
.如果你不使用new
,就像在你的例子中,你不需要delete
任何东西.
在您的示例中,c
如果在函数内声明,则数组的六个字节将在堆栈上分配,而不是在堆上分配.由于这些字节在堆栈上,因此只要声明它们的函数返回它们就会消失.
如果该声明超出任何函数,那么这六个字节将在全局数据区域中分配,并在程序的整个生命周期内保持不变.
在c ++中,不是动态内存分配.不需要delete[]
.
你的例子基本上是一个捷径:
char c[6]={'h','e','l','l','o','\0'};
C++中的规则是您delete[]
在任何时候使用new[]
,delete
无论何时使用new
.如果你不使用new
,就像在你的例子中,你不需要delete
任何东西.
在您的示例中,c
如果在函数内声明,则数组的六个字节将在堆栈上分配,而不是在堆上分配.由于这些字节在堆栈上,因此只要声明它们的函数返回它们就会消失.
如果该声明超出任何函数,那么这六个字节将在全局数据区域中分配,并在程序的整个生命周期内保持不变.