动态内存管理-经典笔试题

目录

题目一:

题目二:

题目三:

题目四:


题目一:

结果:程序崩溃

原因:

1、函数是传值调用,出了函数p不存在,str未改变,依旧为空指针,运行时发生了对空指针的解引用操作,程序崩溃

2、malloc创建的空间依旧在,但丢失地址,造成内存泄漏

代码的修改:

版本一:传址调用

版本二:str接收地址

题目二:

结果:乱码

原因:

函数结束后,空间销毁,而返回局部变量或临时变量的地址: p,但是此时权限已经不属于str,str变成野指针

不可返回栈空间地址,否则非法访问

可返回栈空间的值,借助寄存器临时保存值

修改:

使用malloc函数开辟一块空间,在放入值,就可以正常访问了,因为malloc开辟的空间只有free函数释放后才算结束

题目三:

结果:可以打印出hello,但是存在内存泄漏的问题

修改:加上free释放空间

题目四:

结果:虽然可以正常输出,但是中途str已将被释放,成为野指针

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值