gpt4 book ai didi

c++ - 我的 map 中的内存问题在哪里?

转载 作者:行者123 更新时间:2023-11-30 03:04:50 24 4
gpt4 key购买 nike

我正在从数据库加载数据并将其插入到 map 中。当我尝试打印 map 尺寸和数据时,它仍然显示尺寸 1,并且只打印最后一行。所有以前的数据都被覆盖并包含最后一个值。这里面的任何指针问题。由于公司问题,我更改了变量名。

我也做了一些检查点。所有键值都是唯一的。

typdef long_char char[38];

for(int j = 0; j < 31; j++)
{
sample_enum param_sub_type = result_set[j];
long_char param_name;

strncpy(param_name,result_set[j], sizeof(param_name));
input_status_cd.insert(std::pair<long_char,sample_enum>(param_name, param_sub_type));

/*Insert Into Map */ <I suspect this may be issue but not sure>
}

/*Printing Size of map */
input_status_sd::size_type input_status_cd_size;
etlog_msg(intput_status_cd_size :] [%d]",intput_status_cd.size());

最佳答案

那是因为long_char定义为 char[38]所以当你插入 map 时,它会尝试使用 operator<这将导致比较数组第一个字符的地址。由于您是在循环中创建此数组,因此很可能会分配相同的堆栈帧,因此第一个字符的地址对于每个对象都保持相同。因此所有以前的数据都被覆盖为 map认为您再次插入相同的对象。解决这个问题的最简单方法是使用 std::string作为 long_char 的类型定义.

关于c++ - 我的 map 中的内存问题在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8321862/

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