2014-09-21 68 views
0

我的代碼:無效存儲器引用(SIGSEGV)錯誤

#include <iostream> 
#include <stdio.h> 
#include <string.h> 


int main(int argc, char *argv[]) 
{ 

    std::cout << "test\n"; 

    std::string test = "test"; 

    if (test == argv[1]) { 
     std::cout << "a test"; 
    } 


} 

我正在與克++代碼上Rextester:g++ -Wall -std=c++11 -O2 -o a.out source_file.cpp

我收到錯誤Invalid memory reference (SIGSEGV)

爲什麼我會收到此錯誤?

編譯後,我運行的代碼與參數test 0.1

這是在Rextester的代碼:http://rextester.com/FGVB49226

+1

你傳遞任何參數的程序,當你運行它?如果不是那麼'argv [1]'是'NULL'。 – 2014-09-21 11:50:47

+0

@JoachimPileborg:或超出界限。 – 2014-09-21 11:51:18

+0

'(argc> 1 && test == argv [1])' – 2014-09-21 11:51:36

回答

0

您將通過test 0.1作爲標準輸入。

我不知道該怎麼做就rextester.com

但是你可以在coliru

實現這一見This

+0

謝謝你的幫助!你會在你的回答中解釋'g ++ -pedantic -Wall main.cpp -std = C++ 11 && ./a.out test 0.1'的'&&'部分,以及爲什麼需要它? – user4063326 2014-09-21 12:07:11

+0

@ user4063326如果第一個命令以狀態0(成功)退出,'&&'只運行第二個命令, – P0W 2014-09-21 12:16:30