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