2 c++ arrays pointers memory-management dynamic-allocation
使用new int分配数组的标准方法是:
int* arr = new int[50];
Run Code Online (Sandbox Code Playgroud)
在以这种方式声明它的同时,将存在连续的内存分配,并且变量堆栈中将存在单个数组变量.
如果我想以50个不同的指针变量的形式声明它,以便每个指针具有不同的内存地址,而不一定是连续的,最明显的方法是这样:
int * arr[50];
Run Code Online (Sandbox Code Playgroud)
但是以这种方式分配内存的命令/代码(即通过new int)以及以各种方式声明的缺点或优点是什么.
显而易见的方法是迭代所有元素并为它们分配内存:
for (int i = 0; i < 50; i++){
arr[i] = new int;
}
Run Code Online (Sandbox Code Playgroud)
非连续内存块的缺点是缓存未命中.你可以在这里阅读更多内容.
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |