[英]char * assignment: What's wrong with this code?
當我在lldb中遇到這些代碼時,我發現它總是會*wchar_string[0] = character;
這條線永遠不會循環,此代碼給出細分錯誤:11。
這段代碼,怎么了?
wchar_t *wchar_string[1];
*wchar_string[0] = character;
wcstombs(retstring, (const wchar_t *)wchar_string, 6);
*wchar_string[1]
是長度為1的數組,包含一個指向wchar_string
指針。 盡管數組的每個元素都可以指向任何內容,但最初的指針並不指向任何內容。 換句話說,它們的值是不確定的,這意味着取消引用它們(即應用星號運算符)是不確定的行為 。 這就是為什么您看到一個段錯誤。
若要解決此問題,請在進行分配之前為wchar_string[0]
對象分配一些內存。 分配可以是靜態,動態或自動的; 重要的是必須在訪問內存之前先分配內存。
wchar_t str0[7];
wchar_t *wchar_string[1];
wchar_string[0] = str0; // could use &str0[0], too
*wchar_string[0] = character;
你可能想要
wchar_t wchar_string[2];
wchar_string[0] = character;
wchar_string[1] = 0;
您已經有一個數組。 您不需要任何指針,因此您不需要那些*
字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.