动态分配内存后又被释放。那么指针会变成野指针,它接着能不能被再赋值为一个有效的指针???

osal_msg_deallocate((uint8*)MSGpkt);//打包消息时分配(释放了指针所指的空间)MSGpkt=(afIncomingMSGPacket_... osal_msg_deallocate( (uint8 *)MSGpkt );//打包消息时分配(释放了指针所指的空间)
MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SpiComApp_TaskID );//释放了指针所指向的空间,但指针还是存在(又被赋值)

目前程序是这样运行的,也没有任何问题。我认为这种做法是合法的。
展开
 我来答
zxpointer
2011-11-04 · TA获得超过4102个赞
知道大有可为答主
回答量:1868
采纳率:33%
帮助的人:1209万
展开全部
当然没有问题了
MSGpkt 这个变量是一个指针变量。在它的内存当中可以存放一个指针,就是一个地址值。
你开始的时候在这个内存当中存放的一个指针,然后释放了那块地址,这里你要分清楚它释放的是哪个地址,注意,释放的是该指针变量所指向的内存空间的内存,而不是该指针变量的内存空间
所以就算是你释放了之后,依然可以对这个指针变量进行再次的赋值,给它赋一个新的指针。
byfocus
2011-11-03
知道答主
回答量:11
采纳率:0%
帮助的人:18万
展开全部
首先你要明白 指针 和 指针变量
你所说的 指针是指针变量 指针是地址 指针变量和普通的变量区别只是 指针变量存放的是 地址 指针变量自己有自己的地址
你说的没有任何问题是碰巧的关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
poorcowboy
2011-11-03 · TA获得超过4291个赞
知道答主
回答量:281
采纳率:0%
帮助的人:169万
展开全部
当然可以啦,指针只是一个保存了一个内存地址的变量,你这样理解就明白了,你可以把一个指针从初始化,到变成野指针,再到指向新的元素的过程看作下面的过程:
int a = 10;
a = 0;
a = 5;
不要把指针看的太特殊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式