gpt4 book ai didi

c++ - 将某些内容存储到 unordered_map 时出现浮点异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:04 24 4
gpt4 key购买 nike

我正在使用 unordered_map作为 C++ 中的 HashMap ,但每当我尝试在其中存储任何内容时,我都会得到:

Floating point exception: 8

谁能指出错误是什么?以下是我如何初始化我的 map (table_entry 只是一个结构):

std::tr1::unordered_map<unsigned short, table_entry*> forwarding_table;

然后我在做一个条目:

unsigned short dest_id = 0;    
table_entry *entry = (table_entry *)malloc(sizeof(table_entry));
forwarding_table[dest_id] = entry;

我的结构定义是:

typedef struct table_entry {
unsigned short next_hop;
unsigned int cost;
} table_entry;

就我的编译器版本而言,当我运行 g++ -v 时我明白了:

Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1

最佳答案

我最近在使用 std::unordered_map<> 的各种实例时遇到了同样的问题.但是,我只能在 map 对共享对象具有全局性时重现该问题。如果映射在程序中声明为全局变量,或在函数中声明为局部变量,则问题不明显。

(注意:我使用的是 GCC 4.9.4,32 位模式,-std=c++11)

似乎分配了 std::unordered_map<>在堆上解决了我的问题。也许它会解决你的问题?考虑更换:

std::tr1::unordered_map<unsigned short, table_entry*> forwarding_table;

std::tr1::unordered_map<unsigned short, table_entry*>* forwarding_table;

然后更新 forwarding_table 的使用适本地。

关于c++ - 将某些内容存储到 unordered_map 时出现浮点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19556554/

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