Bản sao có thể xảy ra:
How does the standard new operator work in c++?
How does delete[] “know” the size of the operand array?Làm thế nào để xóa [] biết kích thước của một mảng?
Dupe của How does delete[] "know" the size of the operand array?
Tôi tò mò như thế nào delete [] con số ra kích thước của bộ nhớ được phân bổ. Khi tôi làm điều gì đó như:
int* table = new int[5];
delete[] table;
Tôi hiểu rằng bộ nhớ của bảng được giải phóng. Nhưng điều gì sẽ xảy ra nếu tôi gán lại con trỏ cho một số bảng khác.
int* table = new [5];
int* table2 = new [9];
table = table2;
delete[] table;
Tôi có thể miễn phí một bảng có kích thước 5 hoặc 9 không? Tôi quan tâm đến cách [] và xóa [] chia sẻ thông tin về kích thước của chúng. Hoặc có lẽ tôi đang thiếu một cái gì đó thiết yếu ở đây.
Bản sao (nhiều hơn hoặc ít hơn) của http://stackoverflow.com/questions/377178/how-does-the-standard-new-operator-work-in-c/377208 –
Tôi không đồng ý, điều này cụ thể hơn. –
Như một lưu ý phụ, và như đã đề cập trong các câu trả lời, đây là công cụ cụ thể. Điều đó có nghĩa rằng bạn không nên dựa vào cách nó được thực hiện để trích xuất kích thước của mảng, vì nó có thể thay đổi từ trình biên dịch sang trình biên dịch, và từ phiên bản trình biên dịch sang phiên bản trình biên dịch. –