我一直在 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 上运行它。谁能告诉我如何调试/修复这个?
附言。's' 包含文件中的文本,后跟一个或十二个空字符(如果我运行一个,如果我调试十二个)