Sự khác biệt giữa Malloc và New Khác biệt giữa

Anonim

Malloc vs New

Một của các câu hỏi phỏng vấn phổ biến nhất trong việc thuê một lập trình máy tính là dành cho ứng viên / lập trình máy tính để giải thích sự khác biệt giữa malloc và mới. Cả hai malloc và mới tồn tại trong lĩnh vực ngôn ngữ máy tính và thường được sử dụng bởi các lập trình máy tính để cấp phát bộ nhớ động.

-1,1>

Sự khác biệt cơ bản giữa hai là malloc tồn tại trong ngôn ngữ C trong khi mới là một tính năng cụ thể của ngôn ngữ C ++. Malloc cũng là một chức năng (mà, đối với các lập trình, đòi hỏi một thời gian để thực hiện) trong khi mới là một chương trình điều hành (mà cắt giảm thời gian thực hiện). Đây là một lợi ích từ nhà điều hành mới vì các lập trình viên lập trình thời gian thực cần phải chọn phương pháp nhanh nhất để sử dụng.

Nhà khai thác mới là loại an toàn khác với chức năng malloc.

Chức năng malloc là chức năng thư viện cho ngôn ngữ C. Tất cả nó là được phân bổ bộ nhớ và trả về một con trỏ đến nó. Mặt khác, nhà khai thác mới là một ngôn ngữ cấp xây dựng, và công việc của nó là để nhanh chóng một đối tượng bằng cách phân bổ bộ nhớ và gọi các nhà xây dựng thích hợp. Một khác biệt của malloc chức năng từ nhà điều hành mới là malloc yêu cầu typecasting trong quá trình tuyên bố trong khi trước đây không. Ngoài ra, chức năng malloc sử dụng từ "miễn phí" để xóa bộ nhớ trong khi "xóa" được sử dụng trong điều hành mới cho mục đích tương tự.

Cả hai cũng có những cách khác nhau để đối phó với sự thất bại và sự kiệt sức của bộ nhớ. Nếu malloc chức năng không thành công, nó trả về với một con trỏ NULL. Nhà khai thác mới không bao giờ trả về một con trỏ NULL nhưng chỉ ra sự thất bại bằng cách ném một ngoại lệ thay thế. Đây là một lợi thế cho nhà điều hành mới kể từ khi lập trình viên máy tính không phải kiểm tra con trỏ quay trở lại mỗi khi nó gọi mới cũng không phải là lập trình viên máy tính sẽ bỏ lỡ một ngoại lệ như vậy.

Chức năng malloc không xây dựng một đối tượng (được gọi là constructor của đối tượng) nhưng toán tử mới làm được. Một lợi thế của mới là nhà điều hành có thể bị quá tải trong khi chức năng malloc không thể. Nhà khai thác mới yêu cầu một số lượng cụ thể của các đối tượng để phân bổ trong khi chức năng malloc yêu cầu xác định tổng số byte để phân bổ.

Bộ nhớ cũng có thể được định cỡ lại hoặc tái phân bổ bằng cách sử dụng hàm malloc bằng cách sử dụng realloc. Tuy nhiên, nhà điều hành mới không thể thực hiện chức năng này và tính nó như một trong những bất lợi chính của nhà điều hành. Một lợi thế của malloc chức năng trên điều hành mới là malloc có thể mở rộng bộ nhớ nhanh chóng. Điều này vẫn còn sử dụng malloc và realloc. Khi thực hiện cùng một tình huống trong ngôn ngữ C ++, lập trình viên phải tạo ra một bộ nhớ mới với toán tử mới. Bộ nhớ mới phải có kích thước được sửa đổi và sẽ được sao chép qua dữ liệu từ bộ đệm ban đầu.Các bộ đệm ban đầu đã được xóa sau khi sao chép. Đây có thể là một quá trình chậm cho một lập trình viên.

Toán tử mới có đòn bẩy qua hàm malloc bằng cách trả lại kiểu dữ liệu chính xác trong khi hàm trả về void *. Chức năng malloc cũng không thể quá tải so với người vận hành mới trong đó quá tải là có thể. Một tính năng của nhà điều hành mới là ít có cơ hội mắc lỗi với người vận hành so với chức năng malloc. Đây được coi là một điểm cộng cho các lập trình đặc biệt là nếu họ đang viết nhiều mã hoặc làm việc trên một mã trên một lịch trình chặt chẽ. Chức năng malloc và free có thể được sử dụng trong C ++, nhưng nó không thể được sử dụng trực tiếp. Đó là khuyến khích sử dụng mới và xóa để thay thế.

Tóm tắt:

1. Malloc là một chức năng trong khi mới là một nhà khai thác.

2. New là một tính năng cụ thể của ngôn ngữ C ++ trong khi malloc được sử dụng trong ngôn ngữ C.

3. Nhà khai thác mới sau với "xóa" trong khi chức năng malloc đi với "miễn phí. "

4. Chức năng malloc là chức năng thư viện cho ngôn ngữ C trong khi toán tử mới là một cấu trúc cấp ngôn ngữ từ ngôn ngữ C ++.