C语言内存分配:result 指针指向的内存块长度及free释放的字节数分析
根据给定的代码,result 指针指向的内存块长度是 14 字节。这是因为在 malloc 函数中分配了 10 个字节的空间 (malloc(10)),并且在后面又加上了一个 int 类型的空间 (sizeof(int)),所以总共分配了 10 + 4 = 14 个字节的空间。
free掉的字节长度是 4 字节。在 free 函数中,使用了表达式 (result + 1) 来获取指向 result 指针后面的一个 int 类型的指针。然后通过将其转换为 void 指针后减 1,得到了指向整个内存块起始位置的指针。因此,free 掉的内存块长度为 sizeof(int),即 4 个字节。
这个 14 并没有存在指针内容里,而是通过 sizeof(int) 计算得到的。sizeof(int) 是在编译时确定的,表示 int 类型所占用的字节数。在这里,假设 int 是 4 字节长度,所以 sizeof(int) 返回的值是 4。
原文地址: https://www.cveoy.top/t/topic/qkZ1 著作权归作者所有。请勿转载和采集!