我最近研究关于的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