簡體   English   中英

char *賦值:該代碼有什么問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM