Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果我写“SIGTRAP”就不会出现;";_C++_Compiler Errors - Fatal编程技术网

C++ 如果我写“SIGTRAP”就不会出现;";

C++ 如果我写“SIGTRAP”就不会出现;";,c++,compiler-errors,C++,Compiler Errors,我正在编写一个细胞内粒子代码来模拟等离子体与激光的相互作用。代码的核心如下(在此之前,所有变量都已正确初始化): for(int it=0;it表明您的C++代码有未定义的行为。但是 SIGTRAP < /C>只是其中一种无限的行为,其中未定义的行为可以表现出来。添加另一条语句会导致不确定的行为以不同的方式显示,这并不奇怪。 至于你的评论,new[]和delete通常是应该避免的原语。std::vector可能是更干净的解决方案。但是如果你确实使用了then,那么new[]必须与delete[]

我正在编写一个细胞内粒子代码来模拟等离子体与激光的相互作用。代码的核心如下(在此之前,所有变量都已正确初始化):

for(int it=0;it//cOut

<代码> SIGTRAP < /Cord>表明您的C++代码有未定义的行为。但是<代码> SIGTRAP < /C>只是其中一种无限的行为,其中未定义的行为可以表现出来。添加另一条语句会导致不确定的行为以不同的方式显示,这并不奇怪。


至于你的评论,
new[]
delete
通常是应该避免的原语。
std::vector
可能是更干净的解决方案。但是如果你确实使用了then,那么
new[]
必须与
delete[]
配对,而不是
delete

在E\u update()中函数中有
float*auxE=new float[Ncell]
delete auxE
两行。如果我对
delete auxE
进行注释,那么就不会再有SIGTRAP错误。但是,我仍然不明白核心代码中的
是如何影响这一点的。如果你有
new[]/delete/delete[]
不匹配,您应该能够诱使valgrind或编译器的消毒液或调试模式告诉您。非常感谢您的回复!顺便问一下,我需要使用delete[]在函数内部或退出函数时,分配的内存将自动删除?@AliEsquembreKucukalic:如果要在函数末尾自动删除,只需使用
std::vector
。使用
delete[]
当必须在编译器无法为您确定的将来某个复杂时间手动执行删除时。这在当今非常罕见。在
vector
不起作用的罕见情况下,有备份选项
std::unique_ptr
std::shared_ptr
也可以避免
de删除
。非常感谢!
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);
    }
}