C语言内存分配与释放:result 指针指向内存块的长度分析
result 指针指向的内存块长度是 14 字节。
原因是在 malloc 函数中,我们分配了 10 个字节的内存空间,并且使用了 sizeof(int) 来获取 int 类型的字节长度(4 字节),然后将其加到 10 上,所以总共分配了 14 个字节的内存空间。
这个 14 并不存储在指针内容里,它只是表示分配的内存块的总长度。
通过 sizeof(result) 变量名指向的字节长度是指针的字节长度,而不是指向的内存块的长度。在这种情况下,sizeof(result) 将返回指针的字节长度,即 4 字节。
free 掉的字节长度是 14 字节,因为我们使用了 (void*)(result + 1) 来指向分配的内存块的起始地址,然后通过 (int*)((void*)(result + 1)) - 1) 来将指针指向内存块的前一个字节。所以在调用 free 函数时,我们需要传入 (int*)((void*)(result + 1)) - 1) 作为参数,以确保正确释放整个内存块,长度为 14 字节。
原文地址: https://www.cveoy.top/t/topic/qk0b 著作权归作者所有。请勿转载和采集!