假如int是4字节长度int result = intmalloc10 + sizeofint;result = voidintresult - 1free intvoidresult - 1;result指向的内存块长度是4还是14?为何result指向的内存块长度是14字节?这个14存在指针内容里吗?通过sizeofresult变量名指向的字节长度是free掉的字节是4长度还是14字节
根据给定的代码,result指向的内存块长度是14字节。
首先,根据代码int* result = (int*)malloc(10 + sizeof(int));
,result指向的内存块长度为10 + sizeof(int),即10个字节加上一个int类型的长度,所以是14个字节。
其次,根据代码result = (void*)((int*)result - 1)
,将result的指针类型转换为void*,然后减去1。这里的1表示指针的大小,即sizeof(int),所以减去的是4个字节。
最后,根据代码free((int*)((void*)(result)) - 1);
,将result的指针类型转换为void*,然后减去1,再将其转换为int*类型。这里的1表示指针的大小,即sizeof(int),所以减去的是4个字节。所以free掉的字节长度是4字节。
通过sizeof(*result)变量名指向的字节长度是4字节,因为result是指向int类型的指针,而sizeof(*result)表示该指针指向的数据类型的大小,即sizeof(int)。

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