Câu hỏi về Vala! Làm thế nào mát mẻ!
Vala có tùy chọn -C
hữu ích cho phép bạn xem nhanh mã C nó tạo. Chức năng này, ví dụ ...
int[] GetNumbers() {
return new int[] {1,2,3};
}
... khi biên dịch với ...
valac -C -c test.vala
... sẽ tiết lộ C-code sau (trong 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;
}
Lưu ý g_new0
; vì vậy có, bạn muốn g_free
nó.
Ngay cả khi bạn chỉ thực hiện theo tệp tiêu đề và không thể bận tâm xem xét mọi triển khai, có vẻ như các quy tắc tương tự áp dụng như trong C: nếu nó không phải là const
, hãy giải phóng nó.
Nguồn
2010-06-12 22:32:09