Một số mã của tôi vẫn sử dụng malloc
thay vì new
. Lý do là vì tôi sợ sử dụng new
vì nó ném ngoại lệ, thay vì trả lại NULL
, mà tôi có thể dễ dàng kiểm tra. Gói mọi cuộc gọi đến new
trong một số try{}catch(){}
cũng không có vẻ tốt. Trong khi sử dụng malloc
tôi chỉ có thể thực hiện if (!new_mem) { /* handle error */ }
.Có thể sử dụng một con trỏ thông minh C++ cùng với malloc của C không?
Vì vậy, tôi có một câu hỏi. Tôi có thể sử dụng con trỏ thông minh cùng với malloc
không?
Cái gì như:
SmartPointer<Type> smarty = malloc(sizeof(Type));
Something như thế này.
Điều này có khả thi không?
Cảm ơn, Boda Cydo.
Nếu bạn muốn mới đến bây giờ ném một ngoại lệ và chỉ trả về NULL bạn có thể sử dụng: Loại * bla = new (std :: nothrow) Type() ;. Tôi nghĩ rằng nó tốt hơn để sử dụng std :: nothrow hơn malloc vì sau này không gọi constructor. –
Bạn sẽ làm gì trong mã xử lý lỗi để bù đắp cho việc không nhận được bộ nhớ? Thông thường thử nghiệm là nếu phân bổ làm việc sau đó làm việc. Nếu nó không xuất cảnh với một mã lỗi (đó là một cách compilcated đi qua kiểm soát sao lưu ngăn xếp). –