为了账号安全,请及时绑定邮箱和手机立即绑定

是不是任何程序都要进行内存管理呢?

以前一直都没有怎么做内存管理,没有申请直接用的,问一下在什么情况下要进行内存管理呢?

正在回答

2 回答

使用new关键字是申请堆空间(heap),堆空间比栈空间(stack)容量大,一般局部变量使用栈空间,占用空间较大的变量用堆空间。菜鸟回答,仅供参考。

1 回复 有任何疑惑可以回复我~
#1

碰碰碰气球 提问者

懂了,直接定义的是用栈空间,不用管理内存
2017-02-02 回复 有任何疑惑可以回复我~

//仅是为了说明,代码属于不全代码。



#include <iostream>//代码区


using namespace std;//代码区


void Reverse( char datStr[], char sreStr[] )//代码区

{

int len = strlen(sreStr);//局部变量→栈区


static int j=0;//静态变量→全局数据区     //static 静态的


for(int i=len-1; i<=0;i-- )

{

datStr[j]=sreStr[i];

j++;


};


};

int a = 0;//全局变量 → 全局数据区


int main()//代码区

char sre[100]={0};


a = 1;//(全局变量) 可访问


j = 1;//(静态局部变量)不可访问

system("pause");

return 0;   

}; 

//局部变量:每次执行函数的时候,系统都会在栈区分配一个空间

//每次函数结执行完之后,局部变量(空间)会被销毁,把这个空间还给系统。



//全局变量:不会被销毁永远存在,直到我们的应用程序运行结束。


//全局变量与静态局部变量的区别:

//全局变量:可以在任何地方访问。

//静态局部变量:在声明的函数体内进行访问.


 用New分配一个变量时,不用时必须用delete,否则在堆中不会被释放,占用内存,导致崩溃.

delete 删除 ,后面+地址(指针)

当我们分配的是数组是,释放格式为:

delete []  p;

 在堆中创建一个对象数组,C++要求对象必须有一个默认的构造函数.

应该能看懂 堆和栈区的区别吧~new出来的才进入堆区

静态局部变量还有更深的 不说了

2 回复 有任何疑惑可以回复我~
#1

碰碰碰气球 提问者

多谢啦
2017-05-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

是不是任何程序都要进行内存管理呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信