gpt4 book ai didi

gpointer 中的 char* 以奇怪的编码发送字符串

转载 作者:行者123 更新时间:2023-11-30 15:48:03 25 4
gpt4 key购买 nike

我遇到以下问题。当我在 g_signal_connect 中以 gpointer 的形式传递定义为 char id_rest[25];char 参数时> 以这种方式运行:

  g_signal_connect (G_OBJECT (button_pas_save), "clicked", G_CALLBACK (save),  (gpointer) id_rest);

当我在回调函数中打印它时(在本例中是save),我得到的看起来像是不同编码的字符串。例如,当我通过 AAA 时,我会得到

我尝试使用char*指针和malloc,但它没有改变任何东西。但是什么是 stage,当我不传递变量而只传递 "" 之间的字符串时,它工作得很好。例如:

  g_signal_connect (G_OBJECT (button_pas_save), "clicked", G_CALLBACK (save),  (gpointer) "AAA");

向我发送 AAA

这是我在 save 回调中的 printf:

    printf("%s\n", (char*) id);

并且id是一个gpointer参数。我还尝试使用 gchar 而不是 char,它也没有改变任何东西。

我没有主意了。请帮忙。

编辑:

填充变量是由一个名为 get_id 的不同函数完成的,如您所见,我正在使用 printf 测试此操作,结果很好,很好实际上在回调之后它发送了一些奇怪的东西。

  get_id(con, selection, "pass", id_rest);
printf("%s\n", id_rest);

最佳答案

id_rest 是否存储在堆栈中?当调用回调时,它可能超出了范围,并且也许 g_signal_connect 不会复制它,而只是存储指向它的指针。

编辑

通过重读这个问题,我注意到您还尝试使用 malloc 从堆中进行分配,因此这似乎不是因为数组超出了范围(除非您之前调用了 free回调被调用)

关于gpointer 中的 char* 以奇怪的编码发送字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com