读书人

free() 有关问题,麻烦进

发布时间: 2012-02-20 21:18:23 作者: rapoo

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

读书人网 >C语言

热点推荐