2016-03-18 13 views
0

をスローします。は、私は以下のような機能を持つランタイムエラー

私はそれを呼び出すために、以下のコードスニペットを試してみました:

方法1:

// string to char* - but thats not what I want 
    string *pStr = new string("Where is my place in Memory?"); 
    uint32_t sig = 4; 
    Dump(sig,pStr,100); 

方法2:

// char to string 
    char tab[4]; 
    tab[0] = 'c'; 
    tab[1] = 'a'; 
    tab[2] = 't'; 
    tab[3] = '\0'; 
    Dump(4,&tab,sizeof(tab)); 

法3:

int i=0; 
    char aPointer[] = "I love earth and all its creatures."; 
    char *pCarrier[sizeof(aPointer)]; 
    for (i = 0; i < sizeof(aPointer); i++) 
     pCarrier[i] = &aPointer[i]; 
    Dump(4,pCarrier ,sizeof(aPointer)); 

すべてコンパイルしかし、ランタイムを行動IORは

Invalid read of size 2 
==16492== at 0x4A08DAC 
==16492== Invalid read of size 8 
Memcheck:Addr2 

その他のエラーのようなエラーです:

==24108== Use of uninitialised value of size 8 

いくつかの提案の友人を共有して下さい! Dump()string*が または何それを行うには何であるかわかりませんので

+0

配列 'aPointer'に名前を付けるために誤解を招くビット、あなたは思いませんか? – emlai

+0

申し訳ありませんが、それは誤植です。 – godson

+0

あなたのコンパイラは 'char * pCarrier =&aPointer;'について文句を言うべきです。すべてのコンパイラメッセージを修正し、[MCVE](http://stackoverflow.com/help/mcve)を投稿してください –

答えて

1
  1. 方法1が動作しません。
  2. tabではなくtabのアドレスを送信するため、方法2は機能しません。
  3. 方法3は、各要素のアドレスが配列aPointerに設定されているため機能しません。

試してみてください。

char message[] = "My message"; 
const size_t len = strlen(message); 
Dump(4, message, len); 
+0

あなたの提案に感謝します..私はこれを試してみます... – godson

+0

私はあなたの解決策を試して、以下のエラーを受け取りました "== 24108 ==サイズ8の未初期化値の使用" – godson

+0

'-g'でコンパイルすると、 Valgrind出力の行番号を確認することができます。 –

関連する問題