gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:04:18 46 4
gpt4 key购买 nike

在用户数据区开始之前,使用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/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com