c - 如何计算 malloc 分配的内存块的结束地址?

标签 c malloc

我们都知道 malloc 返回已分配内存块的起始地址,但我想知道如何计算该 block 的结束地址

  int *p, *q;
  p=malloc(4*sizeof(int));
  q=p+4;

现在 q 将指向结束地址 block ,但我想有一些其他方法来获取 malloc 分配的内存块的结束地址。

编辑

我想知道的另一件事是有什么方法可以确保我们在分配 block 的末尾

最佳答案

您不能使用标准技术,仅使用指针作为输入来确定 block 的末尾所在的位置。为了做到这一点。您将必须检测您的分配器或使用提供此类功能的分配器。

当您使用malloc 分配内存时,程序员有责任跟踪您分配了多少内存。您不能要求系统在稍后的某个时间点告诉您有关内存块的任何信息。

关于c - 如何计算 malloc 分配的内存块的结束地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204299/

相关文章:

使用结构的 C 函数,为什么它不起作用?

c - 内存分配

mysql准备语句: Update query

c - 使用 FFT 重复计算函数导数时产生的数值误差

c - WAF - ntldd - 无法链接静态系统库

客户端服务器套接字编程c-linux

c - Malloc 和免费 : memory being freed was not allocated

c - 未分配值

c - 释放指向指针结构的指针

c - 如何正确释放 C 中分配的内存?