我有調用這個主要功能:傳遞一個malloc分配的char *爲構造函數,用printf上的char *給分段錯誤
int main (int argc, char * argv[]) {
char * x = (char*) malloc(100);
x = "test string";
printf("data: %s", x);
StreamManager * SM = new StreamManager(NULL, x);
}
StreamManager在這裏有一個構造函數:
StreamManager::StreamManager(ConnectionManager * CMin, char * data) {
printf("Creating StreamManager\n");
printf("%s\n", data);
printf("done");
...
}
調用此產生輸出:
data: test stringCreating StreamManager
test string
Segmentation fault (core dumped)
爲什麼?它不應該被終止?
編輯:即使更改後問題仍然存在。
MAIN:
char * x = (char*) malloc(100);
strcpy(x, "This is a test");
StreamManager * SM = new StreamManager(NULL, x);
的構造函數:
printf("Creating StreamManager\n");
printf("%s\n", data);
printf("done");
fflush(stdout);
完成不打印。我認爲segfault發生在構造函數的第二個printf中。
爲什麼?你到底在問什麼 – shafeen
爲什麼會發生段錯誤?不應該在「測試字符串」之後打印「完成」?另外,如果我將測試字符串更改爲「測試字符串\ 0」,它仍然存在問題。 – user3760657