当前位置:  开发笔记 > 编程语言 > 正文

这是动态内存分配吗?

如何解决《这是动态内存分配吗?》经验,为你挑选了2个好方法。

简单的问题:我必须deletedelete [] 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如果在函数内声明,则数组的六个字节将在堆栈上分配,而不是在堆上分配.由于这些字节在堆栈上,因此只要声明它们的函数返回它们就会消失.

如果该声明超出任何函数,那么这六个字节将在全局数据区域中分配,并在程序的整个生命周期内保持不变.



1> Gordon Wilso..:

在c ++中,不是动态内存分配.不需要delete[].

你的例子基本上是一个捷径:

char c[6]={'h','e','l','l','o','\0'};



2> Greg Hewgill..:

C++中的规则是您delete[]在任何时候使用new[],delete无论何时使用new.如果你不使用new,就像在你的例子中,你不需要delete任何东西.

在您的示例中,c如果在函数内声明,则数组的六个字节将在堆栈上分配,而不是在堆上分配.由于这些字节在堆栈上,因此只要声明它们的函数返回它们就会消失.

如果该声明超出任何函数,那么这六个字节将在全局数据区域中分配,并在程序的整个生命周期内保持不变.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有