我有一个关于释放指针的理论问题。
我认为有些人(程序本身或操作系统)必须跟踪指针和它们的长度。为什么?
float* pointer1 = malloc( 100 * sizeof(float) );
例如:我这里有一个浮点指针。有人能告诉我pointer1数组的长度是多少吗?没有办法通过在运行时调用函数/方法来获取该指针的长度,对吗?那么程序(或操作系统)如何在不知道运行时实际长度的情况下释放指针的内存部分:
free(pointer1);
如果程序知道指向 free 的指针的长度,为什么我们无法获取该信息并使用其他一些方法来跟踪长度。例如:
struct floatArray
{
float* pointer;
int length;
}
所以,我真的很好奇这个问题。我真的很想了解操作系统如何处理指针长度。
谢谢,
坐下。