2 limit lmt limit_lmt 于 2016.02.08 18:56 提问

哪位大牛来帮帮我看看这个内存分配的小程序的问题

图片说明
free函数不是把p指向的内存空间释放了吗?为什么我还可以使用它的空间,编译运行都没有出错?是哪里出了问题?还是我理解错了什么

2个回答

caozhy
caozhy   Ds   Rxr 2016.02.09 07:18
已采纳

本来就是如此,甚至你不分配空间,拿p瞎指一个地址,都可以赋值。C不会对它检查。

“虽然释放了内存空间 但是由于你重新定义了 是一个int值 所以又自动分配了内存”这个回答是错的。不会分配内存,此时往p赋值,结果不可预料。

michael233123
michael233123   2016.02.08 19:07

虽然释放了内存空间 但是由于你重新定义了 是一个int值 所以又自动分配了内存

limit_lmt
limit_lmt 这个哪里是声明啊,这不是赋值,对内存使用吗?
接近 2 年之前 回复
michael233123
michael233123 回复limit_lmt: 你可以试试在free(p)后面再*p=22上面输出一下
接近 2 年之前 回复
michael233123
michael233123 回复limit_lmt: 就是你又声明了一次 啊 *p=22
接近 2 年之前 回复
limit_lmt
limit_lmt 哪里重新定义了啊??不懂(=_=)
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!