30/09/2018, 17:10

Hỏi về mảng - cấp phát động!

Mình muốn tìm hiểu một số vấn sâu hơn về mảng - cấp phát động. Bạn nào biết thì giúp mình trả lời những câu hỏi sau đây nhé !

  1. Bên C cấp phát bởi các hàm malloc, realloc, calloc -> giải phóng bằng hàm free. Tương tự C++ là toán tử new và delete. Vậy cho mình hỏi có thể dùng cơ chế cấp phát malloc và giải phóng bằng toán tử delete hay cấp phát bằng new và giải phóng bằng free được không ?

  2. Về cơ chế cấp phát realloc dùng khi sửa kích thước vùng nhớ. Cho mình hỏi giả sử muốn tăng kích thước vùng nhớ nhưng ở vị trí hiện tại thì không đủ số ô nhớ liên tiếp cho việc tăng thì có phải chương trình sẽ tìm một vùng nhớ khác đủ với kích thước mới, cấp phát lại, xoá vùng nhớ cũ đồng thời copy vùng nhớ cũ vào không nhỉ ?

  3. Khi mảng 2 chiều được tạo ra bằng cách cấp phát động vùng nhớ cho con trỏ cấp 2 thì những phần tử của mảng có liên tiếp nhau như khi khai báo mảng hằng không ? Nếu mảng 2 chiều có số phần tử ở mỗi dòng khác nhau thì các phần tử có liên tiếp nhau không ?

Rất mong được giải đáp !
Xin cảm ơn !

Nguyễn Duy Khánh viết 19:15 ngày 30/09/2018
  1. Hiện h các IDE C/C++ đều có thể biên dịch đc cả 2 loại ngôn ngữ này nên việc sử dụng hàm của C trong code C++ và ngược lại đều thực hiện được. Còn về quy tắc là ko được, vd như khi code C++ sẽ phải xây dựng hàm RELLOC riêng để thay đổi kích thước mảng
  2. Mảng 2 chiều khi cấp phát động nó ko liên tiếp thì phải. Còn các dòng khác nhau thì e ko biết .
    Nghĩ nào nói vậy thôi nên có gì sai mn chỉ giúp
Bài liên quan
0