-2
typedef struct {
string aPath;
string dPath;
string tmpPath;
int cSet;
int socket;
} threadParams;
的結構,並且這樣
string dirPath = "./Maildir/";
string authPath;
string tmpPath = "~/tmpPath/";
林一些變量嘗試初始化結構,並添加一些像這樣的數據
threadParams *tP = (threadParams*)malloc(sizeof(threadParams));
tP->aPath = authPath;
tP->cSet = cParam;
tP->dPath = dirPath;
tP->socket = commSocket;
tP->tmpPath = tmpPath;
當我用這段代碼運行程序時,SIGSEGV信號在執行時試圖執行:tP-> aPath = authPat H;當我刪除這些結構的字符串成員,並保持只是int變量它沒關係,一切工作正常。
誰能告訴我爲什麼會發生這種情況,以及如何解決它?謝謝
這是C++ not C.使用'new'和'delete'而不是'malloc'和'free'。 –
'這是C++而不是C.' @Captain Obvlious你不知道它。它可以是'typedef char * string;'或'#define string char *' –
@ PeterJ_01實際上,即使使用小代碼片段,也很清楚OP很可能嘗試從C轉換到C++,同時,或將兩者混合在一起。這是一個常見的錯誤,並且確定這裏發生的最可能的事情並不難。 –