A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在程序执行时,我们临时定义的局部变量在栈上生成的内存会随着程序的结束释放,但是程序中使用calloc或new等创建在堆上的内存需要手动释放,否则会造成内存泄漏。但是指向堆上内存的指针手动释放之后,会随之变成野指针,需要定义到NULL上使指针不能被访问。
在此过程,有些疑问想不明白。
第一:如果不对堆上的数据进行手动释放,退出程序以后,这些数据会不会自动释放?如果不释放,下次运行函数时,指针会指向这些地址么?还是指针会重新创建新的地址?
第二:当指针所在函数结束之后,指针还会再存在么?如果不存在,所指向的堆上的数据会因此释放么?
第三:指针是一个变量,里面存放的是一个地址。如果通过malloc定义了一个数组后,再为同一个指针定义新的数组,他的地址会因此改变么,还是说只是将地址中的数据改变了?如果地址会因此改变,原来的地址数据会释放么?如果原来数据没有释放,是要在定义新地址之前手动释放么?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马