2013-05-18 26 views
-1

所以我創造了這個dll的今天,它的崩潰沒有理由崩潰行爲......C++不理解

這工作:

testa++; 
testb++; 

const char *t = "test"; 

if (t == "adoinfosidnoxucnviune") 
{ 
} 

這崩潰的TESTB ++:

testa++; 

const char *t = "test"; 

if (t == "adoinfosidnoxucnviune") 
{ 
    testb++; 
} 

其中testa和testb是整數.. t不是連字符串它與我相比,我不明白

+1

你不能比較那樣的C字符串。 – chris

+0

與strcmp(t,「whatever」)完全相同的事情== 0 – user2361925

+0

請填寫完整的示例。是否初始化了'testb'? –

回答

0

您正在比較指針,而不是指針指向的值。使用或使用std::string

這次事故發生在別處。

因爲您指向兩個不同的對象,所以「if」語句中的代碼不會執行,因爲指針中的值是不同的。

在代碼中的某處,您正在測試testb的值。在第一個示例中,testb始終遞增。在第二個示例中,testb不會遞增。

您初始化了testb

說真的,當你單獨使用調試器時,在崩潰前執行的最後一行是什麼?

+0

爲什麼第一個例子不會崩潰呢? – user2361925

+0

比較有效的指針是完全可以的(即使它沒有產生所需的行爲),並且不應該導致崩潰。 –

+0

我沒有聲明比較指針是導致崩潰的原因。它可能會在代碼後面導致問題。 –