我有以下行:指針轉換在C
char *name = malloc(strsize + 1);
和
uint8_t *data;
data = (uint8_t *)name;
這是正確的?當轉換完成時,指針*名稱不會被解釋爲不好的機會?
我有以下行:指針轉換在C
char *name = malloc(strsize + 1);
和
uint8_t *data;
data = (uint8_t *)name;
這是正確的?當轉換完成時,指針*名稱不會被解釋爲不好的機會?
這不應該是太大的問題,除了內存的符號性會受到不同的訪問之間沿data
和name
解釋。在大多數實際平臺中,大小爲char
和uint8_t
的位是相同的。
,如果他們被解釋不同,你可能會訪問你不想要的內存位置? – user6575913
@ user6575913它是解釋數據的符號性,**不** **指針的符號性 –
@ user6575913示例:'data [0] = 255;'print'(int)name [0]'將產生-1。這可能會讓人困惑,但是你沒有訪問任何「禁止」內存。 – tofro
不,轉換是合法的。但是,當您嘗試打印data
時會出現問題,因爲您不再有char*
。除此之外,鑄件完全支撐。
可能的[在C中uint8和char之間的轉換]重複(http://stackoverflow.com/questions/35264923/conversion-between-uint8-and-char-in-c) – gsamaras
出於興趣,你你malloc直接uint8_t *? – Bathsheba
,因爲我需要在某人編寫的程序中發現一個巨大的漏洞(他說有漏洞),我需要找到它,我想知道這是否是。 – user6575913