在为个人项目编程时,我发现当我将指针传递给一个函数时,它的值无法更改。例子:
...
GString *buf = NULL;
buf = g_string_sized_new(64);
somefunc(buf, filename);
...
和
void somefunc(GString *buf, gchar *filename)
{
buf = otherfunc(filename); //otherfunc() returns a GString *
}
在查看调试器后,我观察到当缓冲区运行的内存分配时,buf=0x80b720 和 otherfunc() 返回 0x80b750。虽然缓冲区的值没有改变。所以我想问一下是否有人知道为什么会发生这种情况以及这是否是 malloc() 的一般特征。换句话说,如果您将 malloc() 调用返回的指针传递给函数,那么您是否能够在函数体内部或外部更改此值?