c++ - 如何更改malloc.c头内容?

标签 c++ c linux memory malloc

在用户数据区开始之前,使用malloc分配的内存块中存在一些 header 内容。

buffer = (char*) (malloc (i));
int j;  
for(j=1;j<9;j++){
printf("before data: %d\n",*(buffer-j));

输出我得到的是 数据前:0 数据前:0 数据前:0 之前的数据:35 数据前:0 数据前:0 数据前:0 数据前:0

我想在 header 中有一个额外的字段,我将用它来设置一些值。我尝试修改 malloc.c 库来设置自定义 header ,但没有任何效果。我想知道是否有什么办法可以做到这一点。

最佳答案

当您尝试访问未分配的内存时,您的代码包含未定义的行为。在给定的平台上,内存分配器可能会将 header 放在分配的内存之前,但您不能依赖这样的情况。

创建您自己的内存解除分配例程以在之前添加更多空间,如下所示:

void *my_malloc(size_t s) 
   char *p = malloc(s+what_you_need);
   if (p!=NULL) return (void *)(p+what_you_need);
   return (void *)p;
}

void my_free(void *p) {
    free(((char *)p)-what_you_need);
}

您还可以关注对齐要求。

关于c++ - 如何更改malloc.c头内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950025/

相关文章:

c - 打印 ASCII 字符的二进制

c - 使用c程序查找我的微 Controller 是8位还是16位

c++ - 在 C++ 中为函数计时

c++ - 一些未定义的行为是否比其他行为更未定义?

c++ - 如何从 const boost::multi_array 获取特定元素

python - Django - 如何安装 Python 图像库 (PIL)

java - socketRead0实现,以及JDBC和glibc之间的通信

c++ - 允许将类分配为零

c - glColor4f() - alpha 值的影响

linux - 如何更改和重新加载正在运行的 shell 脚本?