导航
  • 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
  • 问答

分配的内存不可用?真是晕死!

wmrwinhap 2004-05-11 04:57:46

char* pBuf=(char*)malloc(200*1024);
if(pBuf==NULL) { printf("Memory malloc error !\n");
else {
if(recv(sock,pBuf,100*1024,0)<=0) printf("Read error. errno=%d\n",errno); // 条件成立,errno=EFAULT 指示接收缓冲区指针超出程序地址空间

// 如果没有上行的调用,直接进行下行的调用也导致程序段错误
memset(pBuf,0,200*1024);
......
free(pBuf);
}

分配内存前调用system("free")显示系统总内存为190MB,当前可用内存为15MB,SWAP为506MB,当前可用501MB. 内存分配返回了非空指针,却无法使用,真是晕死了!!!

...全文
12 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmrwinhap 2004-05-12
没错是不小心写错程序了,实际我只分配4字节却要用200K呢,真是该打PP!
回复
saoyu 2004-05-11
200k的空间应该没啥问题啊
回复
gaoxianfeng 2004-05-11
应该不会 你分配的并不多
回复
tianxiangyuan 2004-05-11
如果真像你说的那样malloc分配的内存不可用,我不得不怀疑是你的程序的其他地方出了错错误。
回复
anonimousboy 2004-05-11
malloc是从堆上分配内存,应该没问题啊,在windows下我分配的比这大的多还没问题呢!
回复
发动态
发帖子
Linux/Unix社区
创建于2007-08-27

2.0w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
社区公告
暂无公告