我正在使用c9編譯器得到堆棧粉碎錯誤,我查找錯誤的原因,這是錯誤的代碼/傳遞變量或未聲明/初始化的東西,但我不能找到錯誤在我的代碼...使用C9.io和C++堆棧粉碎錯誤
我已經剝離的,不屬於錯誤的任何不必要的代碼下面的代碼,這是我所:
#include <iostream>
#include <cstring>
using namespace std;
void checkWord(char *word, int size);
int main() {
string word1 = "racecar";
char wordArr[sizeof(word1)];
strcpy(wordArr, word1.c_str());
checkWord(wordArr, strlen(wordArr));
string word2 = "something";
char word2Arr[sizeof(word2)];
strcpy(word2Arr, word2.c_str());
checkWord(word2Arr, strlen(word2Arr));
}
void checkWord(char *wordArr, int size) {
// cout << "Size1: " << size << endl;
int workingSize;
if ((size % 2) != 0) {
workingSize = (size +1)/2;
} else {
workingSize = size/2;
}
char *p, *q;
p = wordArr;
q = wordArr+strlen(wordArr)-1;
bool pal = true;
for (int i = 0; i < workingSize; i++) {
if (*p != *q) {
pal = false;
}
p++;
q--;
}
}
這給我這個錯誤輸出:
*** stack smashing detected ***:/home/ubuntu/workspace/.c9/metadata/workspace/3_16Lab2.cpp.o terminated
bash: line 12: 48077 Aborted $file.o $args
Process exited with code: 134
否則,程序執行時沒有任何問題,並且在這種情況下確認單詞「racecar」和「something」是否是迴文。
從'string'到'char *'的轉換看起來沒有必要。 – Arash