如果这个问题已经得到解答,请告诉我。 我正在尝试为项目构建自定义内存管理器。
假设我分配了一块内存:
void * m = malloc(1000000);
我将该块分成较小的块,指向块中的不同位置。类似于:void * chunk = (char *)m + x;
x与m的偏移量。
当我返回块地址时,使用是否合法:
if(!((chunk >= m) && (chunk <= ((char*)m + x)))){
perror("invalid address: );
exit(-1);
}
补充说明:接收和返回内存地址是单独的函数,因此((char *)m + x)
已经在我构建的struct中的if语句之外定义。
我已经实现了它,它似乎确实有效。但是,如果这是一种确保将正确的内存地址返回给管理器的方法,我找不到任何信息。
我在Linux上使用GCC和C99。