我正在研究一個更大的程序和memcpy導致它崩潰。我在一個小程序中複製了這種情況,它也做了同樣的事情。我注意到,由於某種原因,這個程序運行正常memcpy導致程序崩潰與初始化的目標
// Runs fine
#include <iostream>
int main() {
char* s1 = "TEST"; // src
char* s2; // dest
memcpy(s2, s1, strlen(s1) + 1);
std::cout << s2 << std::endl; // Should print "TEST"
return 0;
}
但這個程序崩潰
// Crashes
#include <iostream>
int main() {
char* s1 = "TEST"; // src
char* s2 = ""; // dest - Note the small change
memcpy(s2, s1, strlen(s1) + 1);
std::cout << s2 << std::endl; // Should print "TEST"
return 0;
}
我不知道爲什麼會這樣。有人能解釋爲什麼它會崩潰嗎?
謝謝!
如果編碼在C++中,你應該避免原始的'char *'指針,並使用'std :: string'和C++智能指針。 –