0
我想不出爲什麼,但這個是我的代碼:違反試圖寫入地址0xFDFDFDFD
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, '\0', 15);
token = strtok(NULL, "+-*/");
}
free(token);
free(expCpy);
}
在這一行:
variableTable[i][0] = atoi(promoter);
我收到一個錯誤,說我試圖寫地址0xFDFDFDFD 我無法弄清楚它爲什麼會發生我可以使用一些幫助。
這看起來更象C比C++,你可能要更改標籤。 – 2014-09-23 19:28:58
0xFDFD是Microsoft C++調試分配器用於標記分配之間的無人地面邊界的模式。因此,假設它是一個指針,並且對它進行解引用,則在分配結束之後解引用。 http://en.wikipedia.org/wiki/Magic_number_(programming) – 2014-09-23 19:31:24
該值可能表示未初始化或懸空指針。 – 2014-09-23 19:31:25