社区
C语言
帖子详情
急!关于free
zcjl
2003-05-22 08:36:37
在函数内部动态分配了一块空间
main中调用该函数后,指向该空间的指针通过类似于p++的方法指向了整块空间的末尾。
请问这个时候用free(p)会释放整个空间吗?
急,望达人帮忙,结贴迅速!
...全文
149
18
打赏
收藏
急!关于free
在函数内部动态分配了一块空间 main中调用该函数后,指向该空间的指针通过类似于p++的方法指向了整块空间的末尾。 请问这个时候用free(p)会释放整个空间吗? 急,望达人帮忙,结贴迅速!
复制链接
扫一扫
分享
转发到动态
举报
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
打赏
举报
回复
真的很急啊
没人看到么??
Fun
Free
Arcade Games-crx插件
适合各个年龄段的难题,脑筋
急
转弯,逻辑等等。 免费玩酷有趣的数学游戏。 可以直接在此Chrome扩展程序中享受游戏,因此您可以全屏播放它们,并免费享受每一分钟有趣的街机游戏! 有六种游戏可以玩,它们都是很酷的...
c语言求abc大小时要怎么输入,C语言 有3个数a,b,c,要求按大小顺序把它们输出。,
急
!!!!!有三个数abc,要求按大小顺序输出. 请问用C语...
,
急
!!!!!有三个数abc,要求按大小顺序输出. 请问用C语C语言 有3个数a,b,c,要求按大小顺序把它们输出。,
急
!!!!!有三个数abc,要求按大小顺序输出. 请问用C语言怎么写...匿名网友:下面介绍两种解题方法1.用if ...
c语言在ABC占几个字节数,C语言 有3个数a,b,c,要求按大小顺序把它们输出。,
急
!!!!!有三个数abc,要求按大小顺序输出. 请问用C语...
,
急
!!!!!有三个数abc,要求按大小顺序输出. 请问用C语2019-6-29来自ip:14.151.182.228的网友咨询浏览量:217手机版问题补充:C语言 有3个数a,b,c,要求按大小顺序把它们输出。,
急
!!!!!有三个数abc,要求按大小...
c语言如何把连续字母分别定义,用C语言编写一个将若干单词按字母排序的程序 请各...
急
!!如何将单词按字母个数排列?...
急
!!如何将单词按字母个数排列?用C语言编写一个将若干单词按字母排序的程序 请各...
急
!!如何将单词按字母个数排列?相关问题:匿名网友://-----------------------------------------------------------------...
数据结构c语言版伪指针,严蔚敏那本《数据结构》书上的伪代码要怎么在vc环境中运行?
急
!很
急
!非常
急
!十万火
急
!...
free
(q); printf("第%d个元素已从链表中删除\n",i); } } LinkedList LinkedListCreat( ) { LinkedList L=LinkedListInit(),p,r; ElemType x; r=L; printf("请依次输入链表中的元素,输入-1结束\n"); scanf("%d",&x); ...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章