本质还是代码出错。
因为两种跑代码的方式略有不同。打个比方:
char *p=malloc(400);
对于这段代码,你申请了堆的空间。runcode或者是在终端输入指令运行代码,几乎对于没有初始化的*p是几乎随机赋值的。而debug,断点之类的,都把它分配在一块特定的内存区域。
所以初始化的不同会影响后续代码运行。即使你在调用p前对他进行初始化,例如:
for(int i=0;i<100;i++)
{
*(p+i)='x';
}
但是在用strlen函数计算长度时也结果也不同。很可能,一个400多,一个100。
所以对于所有创建的变量,创建就初始化可以省去很多的问题。
推荐一个函数memset,对于初始化char很有用。