waterye

calloc(), malloc(), realloc(), free()

void *calloc(size_t nobj, size_t size);
分配足够的内存给nobj个大小为size的对象组成的数组, 并返回指向所分配区域的第一个字节的指针;
若内存不够,则返回NULL. 该空间的初始化大小为0字节.
char *= (char *) calloc(100sizeof(char));

void *malloc(size_t size);
分配足够的内存给大小为size的对象, 并返回指向所分配区域的第一个字节的指针;
若内存不够,则返回NULL. 不对分配的空间进行初始化.
char *= (char *) malloc(sizeof(char));

void *realloc(void *p, size_t size);
将p所指向的对象的大小改为size个字节.
如果新分配的内存比原内存大, 那么原内存的内容保持不变, 增加的空间不进行初始化.
如果新分配的内存比原内存小, 那么新内存保持原内存的内容, 增加的空间不进行初始化.
返回指向新分配空间的指针; 若内存不够,则返回NULL, 原p指向的内存区不变.
char *= (char *) malloc(sizeof(char));
p
= (char *) realloc(p, 256);

void free(void *p);
释放p所指向的内存空间; 当p为NULL时, 不起作用.
p必先调用calloc, malloc或realloc.
free(p);

posted on 2005-11-11 17:01 waterye 阅读(9281) 评论(6)  编辑  收藏

Feedback

# re: calloc(), malloc(), realloc(), free() 2006-05-05 12:56 xie

谢谢啊!  回复  更多评论   

# re: calloc(), malloc(), realloc(), free() 2006-10-19 13:55 过额

p= (char *) realloc(p, 256);
返回指向新分配空间的指针; 若内存不够,则返回NULL, 原p指向的内存区不变.
要是对内存空间不够,原p指向的空间因为p=NULL后而丢失,
危险的内存泄露  回复  更多评论   

# re: calloc(), malloc(), realloc(), free() 2006-10-28 10:47 abc

防止内存泄露:

char *p,*q;
p = (char *) malloc(sizeof(char));
q= (char *) realloc(p, 256);
if (q==NULL)
return -1;
p=q;
  回复  更多评论   

# re: calloc(), malloc(), realloc(), free() 2006-10-28 20:02 JIN JIN

Thanks, it explains...  回复  更多评论   

# re: calloc(), malloc(), realloc(), free() 2006-11-25 08:03 sissi

Thanks.  回复  更多评论   

# re: calloc(), malloc(), realloc(), free() 2007-04-21 15:05 tan

谢谢各位
  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: