我最近研究關於的malloc()在下用聲明如下:兼容性()
void *malloc(size_t size)
其中size_t
是無符號的int和size
定義沒有。的字節被保留。 問題是在我的系統上 float值佔用4字節的內存。所以,如果我使用2bytes的malloc的內存指針(浮點型),
float *p;
p = (float *)malloc(2);
那麼它怎麼沒有給出任何錯誤?因爲我認爲浮點數據需要4個字節,所以如果我只發出2個字節,那麼它可能會導致一些數據丟失。
還是我理解malloc()不正確?
'size_t'不一定是'unsigned int'。不要依賴它。例如。在具有16位'int'但32個指針的系統上,它可能是'unsigned long'。在x64上它可能是'unsigned long long'(Windows,LLP64)或'unsigned long'(POSIX64,LP64)。 – Olaf
您確實已經回答了您的問題。再讀一遍,看看你認爲錯的地方。記住C不會妨礙你(很多)射擊你的腳。 – Olaf
我更關心問題的後半部分 – Lincoln