Tôi có một mảng rất lớn phải dài 262144 phần tử (và có khả năng lớn hơn nhiều trong tương lai). Tôi đã cố gắng bố trí các mảng trên stack như vậy:Làm cách nào để tạo một mảng trong C++ trên heap thay vì ngăn xếp?
#define SIZE 262144
int myArray[SIZE];
Tuy nhiên, dường như khi tôi cố gắng và thêm yếu tố qua một điểm nhất định, các giá trị khác nhau khi tôi cố gắng để truy cập chúng. Tôi hiểu rằng điều này là bởi vì chỉ có một số lượng hữu hạn của bộ nhớ trên stack, như trái ngược với đống có nhiều bộ nhớ hơn.
Tôi đã thử sau đây mà không có nhiều may mắn (không biên dịch):
#define SIZE 262144
int *myArray[SIZE] = new int[SIZE];
Và sau đó tôi xem là sử dụng malloc
, nhưng tôi đã tự hỏi nếu có một C++ nhiều cách như làm điều này ...
#define SIZE 262144
int *myArray = (int*)malloc(sizeof(int) * SIZE);
Tôi có nên chỉ cần đi với malloc
?
thay đổi "myArray [SIZE]" thành "myArray" trong khối thứ hai của mã. – eduffy
Vijay, đây không phải là câu hỏi về việc học cú pháp. Tùy chọn đầu tiên là chính xác, ngoại trừ kích thước và tùy chọn thứ hai là một lỗi đủ phổ biến mà nó đáng được đề cập đến. Ngoài ra, trang web này cũng không giúp ích gì khi ai đó không hiểu cú pháp? –
Để có một lỗi cú pháp trong một câu hỏi không làm cho nó là một câu hỏi xấu. –