我需要画一行字,只要我想。为此我写了一个函数:

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定义为80fDrawSpacedMessage是另一个以文本为中心打印文本的功能。
它建造得很完美,没有错误,没有警告。但在运行时,一切正常,但如果执行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/

10-15 16:06