Eclipse で gtk+ アプリケーションを作成しています。コードのある時点で、gtk+ hello world に似たコードを使用して警告ダイアログが表示されます。このプログラムを実行すると、ダイアログには期待どおりに「単語」の内容が表示されますが、ダイアログを閉じるとプログラムがクラッシュします。私はcが初めてなので、単純な間違いを見つけることを期待してデバッグでプログラムを実行しました。ただし、デバッグを実行すると、ダイアログに「単語」の前に多くのヌル文字が表示され、メッセージがログに記録されました。
Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
この新しい問題は紛らわしく、さらに混乱を招くことに、ダイアログを閉じてもプログラムはクラッシュしませんでした。
要約すると、コードを実行すると、テキストは問題なく、プログラムがクラッシュします。コードをデバッグすると、テキストが無効になり、プログラムはクラッシュしません。
ダイアログ内のテキストは、次のコードで生成されます。
char* answerBuffer = (char*)malloc(strlen(s)+strlen(words)+1);
strcat(answerBuffer,words);
char* answer = (char*)malloc(strlen(answerBuffer)+1);
g_strlcpy(answer,answerBuffer,strlen(answerBuffer)+1);
return answer;
コードが実行されると、answerBuffer の長さは 320 で、words は「a、b、c、d」に設定された char* 引数です。私は、gtk + 2.24を使用してminGWコンパイラを使用してEclipseを介してWindows XPでこれを実行しています。これをデバッグ/修正する方法を教えてもらえますか?
ps。「s」にはファイルからのテキストが含まれ、その後に 1 つまたは 12 個の null 文字が続きます (実行する場合は 1 つ、デバッグする場合は 12 文字)。