std::cout 可防止功能中的段错误

std::cout prevents a segfault in function?

本文关键字:段错误 错误 cout 可防止 功能 std      更新时间:2023-10-16

我正在使用有限元库进行一些计算,我遇到了一个奇怪的问题。我基本上有以下 for 循环:

  MeshBase::const_node_iterator  node_it = mesh.nodes_begin();
  for (unsigned int i=0;i<n_nodes;i++ , node_it++){
    const Node* node2 = *node_it;
    Point dumpoint( (*node2)(0), (*node2)(1), (*node2)(2));
    Number dumreal= (Number) mesh_data.get_data(node2)[0];
//    std::cout << dumreal <<std::endl;
    dummap[dumpoint] = mesh_data.get_data(node2)[0];
  }

如果我用 cout 取消注释该行,它就可以了。否则我会得到一个段错误。我打印什么并不重要:

std::cout << std::endl;

一个重要的注意事项是,dummap 是一个全局

std::map<Point,Number>

使用 valgrind 表明问题出在我分配到其他地方的一些 char* 数组上。谢谢^^