Вала вопрос!Как здорово!
В Vala есть полезная опция -C
, которая позволяет вам взглянуть на генерируемый им C-код.Эта функция, например ...
int[] GetNumbers() {
return new int[] {1,2,3};
}
... при компиляции с ...
valac -C -c test.vala
... покажет следующий 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
it.
Даже если вы просто пользуетесь файлом заголовка и не можете потрудиться взглянуть на каждую реализацию, похоже, применяются те же правила, что и вC: если это не const
, освободи его.