【发布时间】:2017-06-16 10:38:55
【问题描述】:
在用户数据区开始之前,使用malloc分配的内存块中有一些头内容。
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
我想在标题中有一个额外的字段,我将使用它来设置一些值。我尝试修改 malloc.c 库以设置自定义标头,但没有任何效果。我想知道是否有任何方法可以做到这一点。
【问题讨论】:
-
只需调用真正的
malloc来分配比您需要的更多的空间,在额外空间中存储您想要的任何内容,并返回指向您未使用的第一个字节的指针。 (尊重对齐要求。)在free或realloc上,您需要适当调整指针。 -
你想在标题中改变什么?你明白
malloc()的定义不在头文件里吧? -
如果你在 C++ 中使用
malloc(),那么你做错了什么。 -
在分配的压缩/未压缩数据块之外读取数据究竟对您有什么帮助?就好像你丢失了你家的钥匙,为了寻找它,你在一个你和你的钥匙都没有去过的城市里随意翻找垃圾桶。我猜你宁愿寻找一个结构,它最后包含一个灵活的数组成员......?
-
@Fulan 这更没有意义。