c - realloc 不是重新分配内存

标签 c pointers memory memory-management realloc

<分区>

int _add_item( char * _key, void * _value, int item, dict *_dic ){

  printf("%lu", sizeof(_dic->key));
  printf(" + %lu\n", sizeof(_key));
  printf("%lu\n", (sizeof(_dic->key) + sizeof (_key)) );
  _dic->key = (char **) realloc (_dic->key, (sizeof _dic->key) + (sizeof _key));
  _dic->value = (void **) realloc (_dic->value, (sizeof _dic->value)+ (sizeof _value));
  printf("%lu\n", sizeof(_dic->key) );
  getchar();
  _dic->key[item] = _key;
  _dic->value[item] = _value;
  puts(_dic->key[item]);
  printf("%i\n", get_dic_len(* _dic) );
  getchar();

  return 1;
}

输出:

8 + 8
16
8

realloc 不是重新分配内存,它是 8 个字节,我试图重新分配到 16 个字节,但它仍然是 8 个字节

最佳答案

sizeof(_dic->key) 计算指针 的大小,它是常量 - 在您的情况下为 8 个字节。 您机器上的所有指针都是 8 个字节,无论它们指向多少内存。

关于c - realloc 不是重新分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202472/

相关文章:

C语言中 "char"数组的malloc中的转换错误

c - 在struct中初始化函数指针

C++ - 采用指针但接收 int 的方法

c++ - VirtualProtectEx 函数失败 - 错误 487,仅在 Windows XP 上

memory - 戈朗。零垃圾传播或有效使用内存

c - 二叉搜索树上的段错误 - 大排序

c - 为什么这个简单的 c 代码片段不起作用

c - 强制转换时条件表达式中的类型不兼容

c - 机器内存地址的内存地址? (C语言)

对于 'char' 类型,calloc 2 GB 内存失败,但对于 'short' 类型成功