C语言内存分配和指针操作详解:result指向的内存块长度为何是14字节?
result指向的内存块长度是14字节。
result指向的内存块长度是14字节的原因是,首先通过malloc函数分配了10个字节的内存空间,并将指针result指向这个内存空间的起始位置。然后通过将result强制转换为(void*)类型,再将其减去1,相当于将指针向前移动了sizeof(int)个字节(即4个字节),这样result指向的位置就是10个字节内存块之前的4个字节。
sizeof(*result)变量名指向的字节长度是4字节,因为result是指向int类型的指针,所以sizeof(*result)即为sizeof(int),即4字节。
通过free函数释放的字节长度是10字节,因为在释放内存时,要传入的参数是指向malloc返回的指针,即result+1,然后再将其减去1,即(result+1)-1,即result,所以释放的是10个字节的内存块。
原文地址: https://www.cveoy.top/t/topic/qk0f 著作权归作者所有。请勿转载和采集!