2009-08-19 39 views
6

Câu hỏi đơn giản - tôi có cần giải phóng hoặc giải phóng cấu trúc không. Lý do của tôi cho yêu cầu là tôi đang sử dụng một NSInvocation và SEL loại là một cấu trúc. Chỉ muốn biết tôi có cần giải phóng nó không. Cảm ơn.C Cấu trúc mục tiêu và quản lý bộ nhớ

Trả lời

14

Trong mục tiêu-C và C nói chung, nếu một cái gì đó không phải là một con trỏ đến một nơi khác trong bộ nhớ và toàn bộ điều được phân bổ trên ngăn xếp, bạn sẽ không cần phải giải phóng nó. Nó sẽ được giải phóng ngay khi con trỏ ngăn xếp được điều chỉnh ở cuối hàm.

2

Liên quan đến cấu trúc C và quản lý bộ nhớ, Mục tiêu-C không khác với C: nếu bạn malloc(), bạn nên free() nó (tại một số điểm).

4

SEL phải được coi là một loại đục (đó là char * trên thời gian chạy 32-bit) và hầu hết sử dụng sẽ là một trường hợp tĩnh (@selector()) hoặc "tạm thời" biến (NSSelectorFromString()), không phải trong đó cần giải phóng vì bạn đã không phân bổ nó.

+0

Là một 'char *' là chi tiết triển khai. Việc thực hiện mục tiêu-C có thể chọn thực hiện nội bộ nó với một số nguyên đơn giản hoặc bất kỳ cơ chế nào mà nó thích. –

+1

Đó là lý do tại sao tôi nói đó là một loại mờ đục. Tôi đã sử dụng ‘char *’ làm ví dụ về thời điểm nó không phải là cấu trúc. –

Các vấn đề liên quan