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字节。

假如int是4字节长度int result = intmalloc10 + sizeofint;result = voidintresult - 1free intvoidresult + 1 - 1;result指向的内存块长度是4还是14?为何result指向的内存块长度是14字节?这个14存在指针内容里吗?通过sizeofresult变量名指向的字节长度是free掉的字节是4长度还是

原文地址: http://www.cveoy.top/t/topic/iEoL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录