急!关于free

zcjl 2003-05-22 08:36:37
在函数内部动态分配了一块空间
main中调用该函数后,指向该空间的指针通过类似于p++的方法指向了整块空间的末尾。
请问这个时候用free(p)会释放整个空间吗?

急,望达人帮忙,结贴迅速!
...全文
149 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcjl 2003-05-22
  • 打赏
  • 举报
回复
因为设计赶得紧,没办法调试,
所以我想确切知道:我贴出的第二段代码那种做法是否正确?
zcjl 2003-05-22
  • 打赏
  • 举报
回复

楼上的看清楚
长弓也是楼主
只是突然没事干
改了个名字而已
:)
不过谢谢你进来帮忙!!!
zcjl 2003-05-22
  • 打赏
  • 举报
回复
感谢达人救命啊

是不是就是我贴出的第二个代码里面的做法?
wshcdr 2003-05-22
  • 打赏
  • 举报
回复
free只能是指针指在一块内存的开头的时候

才能正确释放

我觉得 zcjl(长弓) 可能猜测出了楼主的意思
晨星 2003-05-22
  • 打赏
  • 举报
回复
当然不会,你必须在移动p之前把原来的值记录到另一个变量里去。

malloc和free都涉及到系统调用,而操作系统只有通过原来被分配的内存的首地址,才能完成正确的释放。
zcjl 2003-05-22
  • 打赏
  • 举报
回复
再等半个小时
没人来看就结贴了!
zcjl 2003-05-22
  • 打赏
  • 举报
回复
用循环依次free?
不懂
楼上的能否给出一个例子看看?
98440622 2003-05-22
  • 打赏
  • 举报
回复
我倾向于使用循环,依次free。
zcjl 2003-05-22
  • 打赏
  • 举报
回复
晕!!
怎么我贴出例子后反而没人来看了?
zcjl 2003-05-22
  • 打赏
  • 举报
回复
xiaoyunet(快乐的小猪)的意思是不是这样:

int main()
{
int Count, num;
StructA *Sp, *Tp;
Func( &Count, &Sp );
Tp = Sp;
while((Count--) > 0)
{
num = Sp->num1;
Sp++;
}
free(Tp) //这里free可以释放掉申请的那块内存空间么?
}


这样就可以了么??
zcjl 2003-05-22
  • 打赏
  • 举报
回复
例子如下:
void Func(int *Count, StructA **Sp)
{
StructA *p;
int count = 5;
(*Count) = count;
p = (StructA *) malloc (sizeof(StructA) * count);
(*Sp) = p;
for( int i=0; i<count; i++)
{
p->num1 = 5;
p++;
}
}

int main()
{
int Count, num;
StructA *Sp;
Func( &Count, &Sp );
while((Count--) > 0)
{
num = Sp->num1;
Sp++;
}
free(Sp) //这里free可以释放掉申请的那块内存空间么?
}

谢天谢地,终于有人来看一下了!!!
xiaoyunet 2003-05-22
  • 打赏
  • 举报
回复
此时不能用free(p)了,要解决这个问题需要用另外一个执政保存p的内容,在对p进行p++之类俄操作就没有问题了,到了释放的时候使用free(保存的指针).
我想说得够明白了吧。
gzqreder 2003-05-22
  • 打赏
  • 举报
回复
他的意思应该是指向数组的指针吧,p++指向下一个数组元素
liu_feng_fly 2003-05-22
  • 打赏
  • 举报
回复
不会,free的那个指针必须是malloc之类的函数返回的指针
gzqreder 2003-05-22
  • 打赏
  • 举报
回复
不会
煜知搬砖者 2003-05-22
  • 打赏
  • 举报
回复

一般的内存管理,free可以释放内存,不过一定要注意几个问题
1。申请内存和释放内存一定要配对
2。free之后,把指针设为NULL

但是这句话不懂:
指向该空间的指针通过类似于p++的方法指向了整块空间的末尾
summerCsdn 2003-05-22
  • 打赏
  • 举报
回复
应该不会,你最好把代码贴出来,或者举个例子。
zcjl 2003-05-22
  • 打赏
  • 举报
回复
真的很急啊
没人看到么??

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧