result指向的内存块长度是14字节。

这是因为在malloc函数中,我们分配了10个字节的内存空间,然后又使用了sizeof(int)来获取一个int类型的字节长度,将其加到了原始的内存空间长度上。所以总共分配了10 + sizeof(int) = 10 + 4 = 14字节的内存空间。

这个14字节的长度并不存储在result指针的内容中,而是存在于分配的内存空间中的前4个字节。result指针只是指向这块内存空间的起始地址,并不包含其长度信息。

当我们调用free函数时,只需要传入malloc或calloc函数返回的指针,即可释放之前分配的内存空间。free函数会根据malloc或calloc函数分配的内存块的长度来释放相应的字节长度。所以在这里,free掉的字节长度是14字节。

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

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

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