我将从C中调用一个Vala函数,我有一个关于内存管理的问题。该函数在Vala中如下所示:
int[] GetNumbers();并被valac翻译成C语言,如下所示
gint* GetNumbers(int* result_length1);当从C调用上述函数时,调用者是否负责释放gint*数组?
发布于 2010-06-13 06:32:10
一个Vala问题!太酷了!
Vala有一个有用的-C选项,允许您查看它生成的C代码。此函数,例如...
int[] GetNumbers() {
return new int[] {1,2,3};
}...when编译为...
valac -C -c test.vala...will展示了以下C代码(用test.c编写)...
gint* GetNumbers (int* result_length1) {
gint* result = NULL;
gint* _tmp0_ = NULL;
gint* _tmp1_;
result = (_tmp1_ = (_tmp0_ = g_new0 (gint, 3), _tmp0_[0] = 1, _tmp0_[1] = 2, _tmp0_[2] = 3, _tmp0_), *result_length1 = 3, _tmp1_);
return result;
}注意g_new0;所以是的,您想要g_free它。
即使你只是根据头文件,不想费心去看每一个实现,它看起来和C中的规则是一样的:如果不是const,就释放它。
https://stackoverflow.com/questions/3030212
复制相似问题