我可以在C中使用带有void *的不等式吗?

时间:2016-11-20 23:09:21

标签: c pointers memory memory-management

如果这个问题已经得到解答,请告诉我。 我正在尝试为项目构建自定义内存管理器。

假设我分配了一块内存:

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。

0 个答案:

没有答案