Logo vi.removalsclassifieds.com

Sự khác biệt giữa Malloc và Mới (Có Bảng)

Mục lục:

Anonim

Malloc là một tính năng trong ngôn ngữ C trong khi new là một tính năng cơ bản trong C ++. Malloc về cơ bản là một hàm tiêu chuẩn trong khi new là một toán tử. Malloc không nên được sử dụng trong C ++ mà không có lý do chính đáng. New / delete không bao giờ được trộn lẫn với malloc / free. Không giống như malloc, new không cần kích thước của toán tử.

Malloc vs New

Sự khác biệt chính giữa malloc () và new () là cái trước là một hàm C tiêu chuẩn và cái sau là một toán tử chỉ có thể được sử dụng trong C ++. Malloc có thể và chỉ nên được sử dụng trong C ++ khi có một số lý do chính đáng. New cho phép ghi đè nhưng malloc không cho phép nó một cách hợp pháp.

Malloc yêu cầu biết kích thước chính xác của toán tử để tìm ra kích thước bộ nhớ mà nó có để phân bổ. Malloc cũng không có khả năng thực hiện cuộc gọi đến hàm tạo. Nó trở về NULL khi nó cảm thấy rằng có một số bộ nhớ bị thiếu.

Nhà điều hành mới không cần bất kỳ thông tin trước nào về kích thước chính xác của nhà điều hành để chỉ định một vị trí cho bộ nhớ. Toán tử mới cũng có thể gọi hàm tạo của một đối tượng. Nó được biết là mang lại một ngoại lệ khi thiếu bộ nhớ.

So sánh giữa Malloc và New ở dạng bảng

Các thông số so sánh

Malloc

Mới

Đặt bằng ngôn ngữ Malloc được sử dụng thường xuyên hơn trong C. Hiếm khi nó được sử dụng trong C ++. Mới chỉ được sử dụng trong C ++.
Lợi nhuận Nó trở về trạng thái vô hiệu. Mới trả về loại thích hợp.
Kích cỡ Trong malloc, kích thước phải được tính toán thủ công Trong Mới, kích thước yêu cầu của trình biên dịch được trình biên dịch tính toán
Ghi đè Hàm malloc không thể được ghi đè một cách hợp pháp. Nhà điều hành mới cung cấp cơ hội để ghi đè.
Loại Malloc là hàm C tiêu chuẩn. Nó sử dụng các toán tử như ==, + =, v.v.
Hành vi khi không có đủ bộ nhớ Malloc trở về NULL khi thiếu bộ nhớ. Mới đưa ra một ngoại lệ trong thời gian thiếu bộ nhớ.
Giao dịch Một malloc () phải được so khớp với một free (). Một () mới phải được so khớp với một xóa ().
Cấp phát bộ nhớ cho Hầu hết tất cả mọi thứ. Chỉ dành cho mảng, đối tượng và cấu trúc.

Malloc là gì?

Malloc () là một hàm thư viện tiêu chuẩn trong C, viết tắt của cấp phát bộ nhớ. Nó được sử dụng để cấp phát động một khối bộ nhớ với một kích thước cụ thể. Kích thước của bộ nhớ được cấp phát theo byte. Nó thường trả về một kiểu con trỏ void vì nó mang một số giá trị rác. Nó không khởi tạo bộ nhớ tại thời điểm thực thi. Hàm Malloc chỉ nên được sử dụng trong C ++ khi nó rất cần thiết để sử dụng, nếu không, việc sử dụng nó chỉ nên được giới hạn ở C. Khi malloc cảm thấy thiếu bộ nhớ, nó sẽ ngay lập tức trở về NULL. Nó không thực hiện khởi tạo bộ nhớ. Nó chứa 2 đối số. Một malloc () phải luôn được so khớp với một free (). Kích thước của bộ nhớ trong malloc phải được tính toán thủ công. Nó đòi hỏi kiến ​​thức trước về kích thước của toán tử để phân bổ kích thước của bộ nhớ. Nó không có khả năng gọi hàm tạo của một đối tượng. Một hàm malloc có thể được sử dụng để cấp phát bộ nhớ cho hầu hết mọi thứ. Hàm Malloc không cho phép ghi đè một cách hợp pháp. Một malloc hoạt động chậm hơn một toán tử mới trong C ++ vì một toán tử luôn nhanh hơn một hàm.

Cú pháp: - ptr = (castType *) malloc (size);

Cái gì mới?

New là một toán tử trong C ++ không thể được sử dụng trong C. Toán tử new có thể gọi một phương thức khởi tạo của một đối tượng và có thể khởi tạo bộ nhớ. Hàm khởi tạo chỉ được gọi sau khi bộ nhớ đã được cấp phát. Kích thước của bộ nhớ được tính toán bởi trình biên dịch. Nó trở về kiểu thích hợp. Nó có thể sử dụng các toán tử như ==, + = v.v… Toán tử mới chỉ cấp phát bộ nhớ cho mảng, đối tượng và cấu trúc. Trong C ++, toán tử mới được áp dụng để đưa ra yêu cầu cấp phát bộ nhớ trên heap. Với điều kiện có đủ bộ nhớ, toán tử mới khởi tạo nó và sau đó hoạt động để trả lại bộ nhớ mới được cấp phát và hình thành cho biến con trỏ. Một () mới phải luôn được so khớp với một xóa (). Toán tử này được sử dụng để cấp phát bộ nhớ động, xây dựng đối tượng và phá hủy. Bộ nhớ được cấp phát cho các đối tượng từ một nhóm được gọi là kho lưu trữ miễn phí. Nó hoạt động nhanh hơn nhiều so với malloc vì nó là một toán tử chứ không phải một hàm.

Cú pháp: - pointer-variable = new data-type;

Sự khác biệt chính giữa Malloc và New

Sự kết luận

Malloc () là một hàm tiêu chuẩn trong C, hàm này cũng được sử dụng trong C ++ khi cần thiết. New () là một toán tử chỉ được sử dụng trong C ++. Malloc () phải so khớp với free () và new () với delete () để làm cho nó hoạt động bình thường. Cả hai không bao giờ được hoán đổi cho nhau. Một hàm mới tiên tiến hơn nhiều so với một hàm malloc vì nó không yêu cầu biết trước về kích thước của toán tử để cấp phát không gian cho bộ nhớ nhưng một hàm malloc lại yêu cầu nó. Một hàm malloc không thể gọi hàm tạo của một đối tượng mà một toán tử mới có khả năng làm như vậy. Một hàm malloc được biết là cấp phát bộ nhớ cho hầu hết mọi thứ nhưng toán tử mới chỉ cấp phát bộ nhớ cho các mảng, đối tượng và cấu trúc trong C ++. Mặc dù một malloc nhanh hơn nhiều so với tốc độ trung bình nhưng tốc độ có thể thay đổi tùy thuộc vào yêu cầu cá nhân. Khi thiếu bộ nhớ, malloc trở về NULL trong khi new ném ra một ngoại lệ do lỗi.

Người giới thiệu

Sự khác biệt giữa Malloc và Mới (Có Bảng)