2012-02-09 9 views
2
#include <QtCore/QCoreApplication> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    a.setApplicationName("xxx"); 
    char bb[25] = {10, 1, 64, 18, 20, 116, 97, 114, 97, 110, 103, 105, 108, 108, 51, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109}; 
    char* aa = new char(25); 
    memcpy(aa, bb, 25); 
    delete aa; 
    return a.exec(); 
} 

私は上記のコードを実行すると、約1〜5回のうち、私は次のエラーを取得する:完全にランダムにmallocエラー

tftest(28702,0x7fff70de3cc0) malloc: *** error for object 0x10160ee28: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 
Press <RETURN> to close this window... 

これは以来、狂気私を運転していますエラーは完全にランダムに表示されます。

全体のクラッシュログは、おそらく25文字の配列を作成するには

char* aa = new char[25]; 

を言うことを意味しhttp://pastebin.com/Qtp9T2gW

答えて

5

ライン:

char *aa = new char(25); // dynamically allocate a single char = 25 

はとは全く異なります。

char *aa = new char[25]; // dynamically allocate an array [0..24] of char 

あなたはまた、operator delete[]operator new[]を結合する必要がある、とoperator deleteoperator new - あなたはさまざまな組み合わせをミックスして一致させることはできません。

+0

正直、何が間違っていたのですか?私は何年もPHP/JavaScriptで作業した後、C++に戻ってきています!ありがとう :) –