首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

free() 有关问题,麻烦进

2012-02-20 
free() 问题,麻烦进.#includestdio.h#includestring.hvoidmain(void){intbufferSize10char*pchNULL

free() 问题,麻烦进.
#include   <stdio.h>
#include   <string.h>

void   main(void)
{
int   bufferSize=10;
char   *pch=NULL;
int   tmp=0;
int   i=0;

pch=(char   *)calloc(bufferSize,sizeof(char));
if   (pch==NULL)exit(1);
tmp=_msize(pch);
for   (i=0;i <tmp;i++)
{
strcat(pch, "* ");
}
free(pch);  
}

-------------------------------

以上的代码编译成功..
但运行到free(pch);   这里就弹错了.如果把循环去掉就没事.
为什么会这样的.?

[解决办法]
越界啦,i==9的时候 ...
[解决办法]
确实是越界了

因为你最后一个strcat的时候会把 "* "的一个 '\0 '付给 gch[10]
你分配了10个字符的空间是从 gch[0] ~gch[9]


----
to yoyo_alex_lw() ,yoyo_alex_lw()
顺便补充 _msize :取堆上分配空间的大小,#include malloc.h

热点排行