我需要画一行字,只要我想。为此我写了一个函数:
void fDrawLine(int length)
{
int i;
char * compLine = (char *) malloc(WINDOW_WIDTH + 2);
for(i = 0; i < length; i++)
strcat(compLine, "-");
fDrawSpacedMessage(compLine, -1, TRUE);
}
WINDOW_WIDTH
定义为80
,fDrawSpacedMessage
是另一个以文本为中心打印文本的功能。它建造得很完美,没有错误,没有警告。但在运行时,一切正常,但如果执行
fDrawLine
,程序就会崩溃并给出错误代码0xc0000005
。我知道这是关于内存分配的,但我已经初始化了compLine
字符串。我尝试过一些方法;我认为是另一个函数导致的,所以我隔离了
fDrawLine
,但崩溃仍在继续。用compLine[0] = 0;
更改初始化,compLine[WINDOW_WIDTH] = {0};
没有帮助。它与我的另一台运行Ubuntu和最新gcc的机器配合得很好,但是当在Windows上使用Code::Blocks(MinGW)时,它总是崩溃。
这个密码怎么了?
最佳答案
分配的内存开始包含垃圾。将其设置为空字符串,例如:
compLine[0] = '\0';
关于c - strcat使崩溃程序(0xc0000005),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27565976/