如何解决动态内存分配不足的问题

wenxian8 2011-03-16 03:18:50
下面是个人写了一个简单的程序,
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char *str;
str=(char *)calloc(10,sizeof(char));
if(str!=NULL)
{
strcpy(str,"http://www.95wangming.com");
printf("String is %s\n",str);
}
free(str);
return 0;
}
发现动态内存分配不足,请问高手,如何在程序里判断内存不足,然后再次分配足够的内存。
谢谢了
...全文
497 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wenxian8 的回复:]
void main()
{
char *str=NULL;
str=(char *)calloc(10,sizeof(char));
printf("%d \n",sizeof(str)); //输出结果为4,为什么不是10的啊?
}
[/Quote]
你算得是指针的大小而非指针指向内存的大小。
wenxian8 2011-03-16
  • 打赏
  • 举报
回复
void main()
{
char *str=NULL;
str=(char *)calloc(10,sizeof(char));
printf("%d \n",sizeof(str)); //输出结果为4,为什么不是10的啊?
}
hc_z 2011-03-16
  • 打赏
  • 举报
回复
void *calloc(n,size);

calloc()为n个元素的数组分配存储空间,每个元素的大小为size字节,
每个元素初值为0。

(http://topic.csdn.net/t/20030509/10/1759514.html)

另, strcpy(str,"http://www.95wangming.com");可能会有风险, 字符串长度应该越界了。
metohang 2011-03-16
  • 打赏
  • 举报
回复
strcpy 前是不是要加个判断?
witwolf 2011-03-16
  • 打赏
  • 举报
回复
你分配大点就没问题
str=(char *)calloc(100,sizeof(char));
metohang 2011-03-16
  • 打赏
  • 举报
回复
楞是没看懂到底问下啥
witwolf 2011-03-16
  • 打赏
  • 举报
回复
strcpy(str,"http://www.95wangming.com");
内存越界了。
你只分配10字节
hc_z 2011-03-16
  • 打赏
  • 举报
回复
》》calloc
我怎么记得是malloc函数,
quwei197874 2011-03-16
  • 打赏
  • 举报
回复
是啊!
hc_z 2011-03-16
  • 打赏
  • 举报
回复
>>发现动态内存分配不足
你是怎么发现的?10个字节一般不会分配不成功的。
hc_z 2011-03-16
  • 打赏
  • 举报
回复
不是吧,if(str!=NULL)不就是判断是否分配好内存的语句吗?

69,371

社区成员

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

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