Sha*_*ang 5 c++ allocation segmentation-fault new-operator
当我试图调用"new"来创建一个指针并将其推入向量时,我得到了段错误.我在向量中推送元素的代码是:
queue->push_back(new Box(gen_id, Interval(x_mid, x_end), Interval(y_mid-y_halfwidth, y_mid+y_halfwidth)));
Run Code Online (Sandbox Code Playgroud)
基本上Box是一个类,构造函数只需要3个参数generation_id,和2 Intervals.在此"推送"之前和之后,我在向量中打印出内容,然后:
[ -0.30908203125, -0.3087158203125 ] , [ -0.951416015625, -0.9510498046875 ]
[ -0.3087158203125, -0.308349609375 ] , [ -0.951416015625, -0.9510498046875 ]
[ -0.30908203125, -0.3087158203125 ] , [ -0.9510498046875, -0.95068359375 ]
[ -0.3087158203125, -0.308349609375 ] , [ -0.9510498046875, -0.95068359375 ]
Run Code Online (Sandbox Code Playgroud)
后:
[ -0.30908203125, -0.3087158203125 ] , [ -0.951416015625, -0.9510498046875 ]
[ -0.3087158203125, -0.308349609375 ] , [ -0.951416015625, -0.9510498046875 ]
[ 8.9039208750109844342e-243, 6.7903818933216500424e-173 ] , [ -0.9510498046875, -0.95068359375 ]
[ -0.3087158203125, -0.308349609375 ] , [ -0.9510498046875, -0.95068359375 ]
[ -0.3087158203125, -0.308349609375 ] , [ -0.95123291015625, -0.95086669921875 ]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况,但显然,有一个元素被破坏了.除了"推"之外,这两组输出之间没有其他代码,我使用gdb来确认.另外,我检查了这两个Intervals变量,两个都给了我一个有意义的结果.
我的问题是:"新"在什么情况下会出现段错误?或者是因为其他东西导致我的问题?谢谢.