C Vala内存管理

C Vala内存管理,c,memory-management,vala,C,Memory Management,Vala,我将从C调用一个Vala函数,我有一个关于内存管理的问题。 Vala中的函数如下所示: int[] GetNumbers(); 并被valac翻译成C,如下所示 gint* GetNumbers(int* result_length1); 当从C调用上述函数时,调用方是否负责释放gint*数组?一个Vala问题!多酷啊 Vala有一个有用的-C选项,允许您查看它生成的C代码。这个函数,例如 int[] GetNumbers() { return new int[] {1,2,3};

我将从C调用一个Vala函数,我有一个关于内存管理的问题。 Vala中的函数如下所示:

int[] GetNumbers();
并被
valac
翻译成C,如下所示

gint* GetNumbers(int* result_length1);

当从C调用上述函数时,调用方是否负责释放
gint*
数组?

一个Vala问题!多酷啊

Vala有一个有用的
-C
选项,允许您查看它生成的C代码。这个函数,例如

int[] GetNumbers() {
    return new int[] {1,2,3};
}
…当使用

valac -C -c test.vala
…将显示以下C代码(在
test.C

注意
g_new0
;所以,是的,你想要
g_free
it

即使您只是查看头文件,不必费心查看每个实现,它看起来与C中应用的规则相同:如果不是
const
,请释放它

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;
}