1
以下程序崩潰。我究竟做錯了什麼?簡單的代碼在C崩潰中產生一個進程。爲什麼?
#include <stdio.h>
#include <process.h>
int main() {
puts("Hello!");
return spawnlp(0, "notepad.exe", "notepad.exe", "test.txt");
}
以下程序崩潰。我究竟做錯了什麼?簡單的代碼在C崩潰中產生一個進程。爲什麼?
#include <stdio.h>
#include <process.h>
int main() {
puts("Hello!");
return spawnlp(0, "notepad.exe", "notepad.exe", "test.txt");
}
您錯過了作爲參數列表的一部分傳遞的終止NULL。
如果沒有終止,參數列表將不會被稱爲年底,系統將繼續閱讀這會導致undefined behavior由於無效的內存位置訪問。
同[你昨天的問題(http://stackoverflow.com/questions/43187986/how-do-i-know-when-i-ought-to-free-strings-in-c-returned- by-library-functions):這個人擁有你所需要的一切:_Argv的最後一個成員必須是一個NULL指針._L – LPs
@LPs:它具有它。我讀過它,但我沒有正確處理它:當我讀到它時,我認爲這個要求適用於'spawnvp()'(它接受一個數組)而不是'spawnlp()'(它帶有一個參數列表)。這是否使我變成傻瓜或是「人」無效的援助?我想我已經知道你的意見了。 – 7vujy0f0hy