本文主要是介绍动态内存管理-经典笔试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
题目一:
题目二:
题目三:
题目四:
题目一:
结果:程序崩溃
原因:
1、函数是传值调用,出了函数p不存在,str未改变,依旧为空指针,运行时发生了对空指针的解引用操作,程序崩溃
2、malloc创建的空间依旧在,但丢失地址,造成内存泄漏
代码的修改:
版本一:传址调用
版本二:str接收地址
题目二:
结果:乱码
原因:
函数结束后,空间销毁,而返回局部变量或临时变量的地址: p,但是此时权限已经不属于str,str变成野指针
不可返回栈空间地址,否则非法访问
可返回栈空间的值,借助寄存器临时保存值
修改:
使用malloc函数开辟一块空间,在放入值,就可以正常访问了,因为malloc开辟的空间只有free函数释放后才算结束
题目三:
结果:可以打印出hello,但是存在内存泄漏的问题
修改:加上free释放空间
题目四:
结果:虽然可以正常输出,但是中途str已将被释放,成为野指针
这篇关于动态内存管理-经典笔试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!