尝试写入地址0xFDFDFDFD时发生冲突

violating trying to write to address 0xFDFDFDFD

本文关键字:冲突 0xFDFDFDFD 地址      更新时间:2023-10-16

我不知道为什么,但这是我的代码:

    char expression[256] = {};
    cin >> expression;
    cout << endl;
    int** variableTable = NULL;
    int numOfVals = getNumberOfVariables(expression);
    variableTable = static_cast<int**>(calloc(numOfVals, sizeof(int*)));
    for (int i = 0; i < numOfVals; i++)
    {
        variableTable[i] = static_cast<int*>(calloc(2, sizeof(int)));
    }
    fillPromoterTable(expression, variableTable, numOfVals);

这是fillPromoterTable

void fillPromoterTable(const char* expression, int** variableTable, int numOfVals)
{
    char promoter[15] = {};
    char *token;
    char* expCpy = pcstrdup(expression);
    for (int i = 0; numOfVals; i++)
    {
        token = strtok(expCpy, "+-*/");
        int nLen = istrlen(token);
        for (int j = 0; j < nLen; j++)
        {
            if (isdigit(token[j]))
                promoter[j] = token[j];
            if (isalpha(token[j]))
                break;
        }
        variableTable[i][0] = atoi(promoter);
        memset(promoter, '', 15);
        token = strtok(NULL, "+-*/");
    }
    free(token);
    free(expCpy);
}

这一行:

variableTable[i][0] = atoi(promoter);

我收到一个错误,说我正在尝试写入地址0xFDFDFD我不明白为什么会发生这种事,我需要一些帮助。

在函数fillPromoterTable中更改for循环条件

for (int i = 0; numOfVals; i++)

收件人:

for (int i = 0; i < numOfVals; i++)