有关内存的思考

 

第一个题

指针str指向NULL 进行函数的调用把str的参数NULL传给了P 所以P的内容为NULL(*p=NULL)然后malloc申请了空间并把申请空间的首地址付给了p 所以p里面的内容变成了开辟空间的首地址。p和str并没有什么关系str没有空间被赋值的换会是段错误

第二个题

指针str为NULL 然后进行系统调用数组p=helloworld空间在栈区 所以让p的地址被返回被str接受时 p数组所管理的空间就被释放了 里面的内容已经没有了 再用str去访问的话会出现段错误。

 

 

第三个题

指针str=null 然后进行系统调用参数传的时str的地址和数字100  p是二级指针接受的是一级指针的地址 所以p=&str  p里面的内容就是str的地址(p里面是一个具体的地址)

*p=NULL malloc申请的空间放到p里面所以*p里面就是开辟空间的首地址 所以str里面也会变成开辟空间的首地址。

 

第四个题

Free之后没有把str=null 就会出现野指针在程序中乱指 可能指出其他的空间也可能没有指到其他空间 不知道会打印出什么 解决野指针的方法就是在free之后把指针赋值一个空。

野指针的梗 指单身狗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值