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