网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月18日
漏签
0
天
c语言吧
关注:
801,208
贴子:
4,371,224
看贴
图片
吧主推荐
视频
游戏
6
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
关于malloc
只看楼主
收藏
回复
幽龙坠
酱油
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一直没弄明白这几个问题。
1.要是malloc申请的内存没有指针指向它怎么办?比如
int *p,x;
p=(int*)malloc(sizeof(int)*4);
p=&x;
这样以后malloc的内存是不是算已经释放了,因为没有指针指向它。
2.指针指向malloc申请的连续内存的中间部分,free后释放整块内存吗?
int *p,x;
p=(int*)malloc(sizeof(int)*4);
p++;
free(p);
p=NULL;
辷丝不挂
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一个不叫释放了,叫内存泄漏了
2025-11-18 23:17:30
广告
不感兴趣
开通SVIP免广告
长夜当哭
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
楼主这问题问得很好啊,很有想法,赞一个
秋天的晨风
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一问一层已经给了,二层兄弟纯属瞎扯,楼主不要信,c语言大部分写的是底层内核相关的程序,它那样理解写程序死都不知道怎么死的。Windows系统一次malloc系统是会给33个内存页的物理地址空间的,一个内存页是4096字节的,malloc(4)你以为系统只给你四个字节的空间吗,其实系统会多给你很多隐形空间的,free(p)释放的是第一个字节的空间,为什么体统会自动把所有申请的也释放掉呢,这也是有讲究的,具体详细的如果楼主如果感兴趣,说声,再慢慢细说
绅士的绅士君
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一个要是真能自动释放,那还要free()干嘛?第二个,你把p赋值给另外一个指针,然后再对那个指针++或--就行了,干嘛还要动p指针?
哈哈哈嗝了
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在系统下分配内存没释放,退出时系统还能自动释放,要是在内核里没释放,除非关机,要不就会一直占用着。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示