내가 컴파일 한 후 우분투에서 잘 작동하는 프로젝트를, 코드 조각 같은 수 있습니다 : 우분투에C++ 루프가 centOS7에서 잘못 튀어 나왔습니까?
void Backtest::start()
{
std::cout << "start !!" << std::endl;
std::cout << bars.size()<< std::endl;
int jj=0;
while(jj<bars.size()){
std::cout << "on bar " << jj<<std::endl;
newBar(&bars[jj]);
jj++;
}
}
모든 것이 잘 작동 크기는 약 3020입니다 바 있지만, CentOS는 7 만 JJ = 3에서 종료, GDB 출력 : GDB (409)에서
(gdb) next
start !!
3020
407 count = 0;
(gdb)
408 jj=0;
(gdb)
409 while(jj<bars.size()){
(gdb)
410 std::cout << "on bar " << jj<<std::endl;
(gdb)
on bar 0
411 newBar(&bars[jj]);
(gdb)
412 jj++;
(gdb)
409 while(jj<bars.size()){
(gdb)
410 std::cout << "on bar " << jj<<std::endl;
(gdb)
on bar 1
411 newBar(&bars[jj]);
(gdb)
412 jj++;
(gdb)
409 while(jj<bars.size()){
(gdb)
410 std::cout << "on bar " << jj<<std::endl;
(gdb)
on bar 2
411 newBar(&bars[jj]);
(gdb)
412 jj++;
(gdb)
409 while(jj<bars.size()){
(gdb)
410 std::cout << "on bar " << jj<<std::endl;
(gdb)
on bar 3
411 newBar(&bars[jj]);
(gdb)
asd
|100000.000000,100000.000000|
get cash 100000.0
412 jj++;
(gdb)
409 while(jj<bars.size()){
(gdb)
415 }
그것이 이상하게 빈 루프 종료를 제공, 여기 가능성이 무슨 일입니까 ???
void Backtest::newBar(Bar* b)
{
if(Number == count+1){
tempbars.push_back(*b);
crossLimitOrder();
strategyPy->onBar(tempbars);
tempbars.clear();
count = 0;
}else{
tempbars.push_back(*b);
count ++;
}
}
PS newBar 프로젝트에 뭔가 다른,()는 기본적으로 뭔가를 할 수있는 strategyPy를 호출하고, 그 getCash 포함 파이썬 일부 API를 제공 C++ 기능 (전화 부스트 파이썬 모듈을 호출 것입니다 , 그게 왜 디버그 정보에 출력하는지)
'newBar()'란 무엇입니까? 또한이 함수가 비 정적 멤버 인 경우,'Backtest' 인스턴스가 더 유효합니다. – PaulMcKenzie
다른 스레드가 실행 중입니까? "현금을 얻는 곳"은 어디에서 오는가? – wally
방금 newBar를 업데이트했습니다 –