C语言内存分配详解:result指针指向的内存块长度为何是14字节?
result指向的内存块长度是14字节。这是因为在分配内存时,通过malloc函数分配了10个字节的内存,并且还额外分配了一个int类型的内存,即sizeof(int)个字节。所以总共分配了10 + sizeof(int)个字节的内存。\n\n这个14并不直接存在于指针内容里,而是通过result指针的前一个int类型内存来保存的。result = (void*)((int*)result - 1)这一行代码的作用是将result指针向前移动一个int类型的长度,即向前移动了sizeof(int)个字节,然后将指针进行类型转换为void类型。\n\n通过sizeof(result)获取的是result所指向的内存块中int类型的字节长度,即sizeof(int)个字节,也就是4字节。\n\n在调用free函数时,传入的参数是指向result指针前一个int类型内存的指针,即(int)(void)result - 1。因此,free掉的字节长度是 sizeof(int) 个字节,即4个字节。
原文地址: https://www.cveoy.top/t/topic/qk0A 著作权归作者所有。请勿转载和采集!