c++ - 如果我写“cout”,SIGTRAP 不会出现
问题描述
我正在编写一个 Particle-In-Cell 代码来模拟等离子激光相互作用。代码的核心如下(在此之前所有变量都已正确初始化):
for(int it = 0; it < Nt-1; it++)
{
//cout << "it = " << it << endl;
pos = pos_update(pos, vel, qm, E_P, it);
vel = vel_update(pos, vel, it);
rho_part = rho_part_update(rho_part, pos, qm, it);
rho = rho_update(rho, rho_part, it);
E_P = E_P_update(E_P, pos, rho, rho_part, it);
}
}
如您所见cout
,已评论。如果是这样,在执行程序时它最终会停止并且调试器会显示消息“程序收到信号 SIGTRAP,跟踪/断点陷阱”。奇怪的是,如果我允许“cout”行代码(我写它是为了找出代码失败的时间),那么就没有错误并且代码按预期工作。知道发生了什么吗?如果您需要详细的功能
解决方案
SIGTRAP
表明您的 C++ 代码具有未定义的行为。但这SIGTRAP
只是未定义行为可以表现出来的无限方式之一。添加另一个语句会导致未定义行为以不同的方式出现,这并不奇怪。
至于您的评论,new[]
并且delete
是通常应避免的原语。std::vector
可能是更清洁的解决方案。但如果你确实使用 then ,则new[]
必须与 配对delete[]
,而不是delete
。
推荐阅读
- python - 如何在 Python 文件中运行多个 Linux 命令
- angular - 带有用户名和密码 ionic 4 的 Http 获取请求
- reverse-proxy - Apache 没有从反向代理后面的 API 传递 404 错误
- ruby-on-rails - Rails 模型 has_many 关联到同一个模型
- python - 打包一个带有隐藏文件夹的python项目
- javascript - 在javascript中打印像console.log这样的对象(有很多信息)
- php - GuzzleHttp\Client 不返回任何响应
- c - 产生正弦波会产生噪音
- entity-framework - 在 Helper 类中访问 DbContext
- python - 如何使用excel行作为python的输入?