网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数: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
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示