动态创建二维数组使用多少大小

     2023-02-22     159

关键词:

【中文标题】动态创建二维数组使用多少大小【英文标题】:How much size is used on dynamically creating a 2d array 【发布时间】:2019-01-22 15:13:52 【问题描述】:

我想知道动态创建二维数组时分配了多少大小

假设如果我在 c++ 中动态创建一维数组,它会像

int* p = new int[10];

这意味着堆内存中有 40 个字节,堆栈内存中有 8 个字节(根据我的编译器) 但我很困惑如果我制作二维数组将分配多少内存 喜欢(对于 10*10 二维数组)

int** p = new int*[10];
for(int i = 0; i < 10; i++) 
    p[i] = new int[10];

将在我的堆栈和堆中分配多少内存 堆栈中是 80 字节,堆中是 400 字节吗 或者别的什么

【问题讨论】:

请注意,动态分配的数组可能有未指定的内存开销,sizeof 数组对象没有反映出来。 不要像那样写二维数组。使用具有 2D 访问权限的 1D 数组。 如果指针为8字节,int为4字节,则栈上为8字节,堆中为8*10 + 4*10*10字节 @IłyaBursov 不止于此。 @MatthieuBrucher 对,但我认为实现细节在这个问题中并不重要 【参考方案1】:

您有一个指针类型的自动变量(不包括循环变量)。因此,您使用 8 个字节的堆栈(在您的系统上)。

您动态分配一个包含 10 个指针的数组,因此堆上有 80 个字节。然后分配 10 个 10 个整数的数组,因此堆上多出 400 个字节,堆上总共有 480 个字节。

请注意,每个单独的动态分配必须与alignof(std::max_align_t) 对齐,因此可能需要为每个分配最多填充alignof(std::max_align_t) - 1 字节。分配器本身将使用一些内存进行内部表示,以允许以任意顺序有效地释放内存。自动变量可能需要填充到 alignof(int**) - 1

【讨论】:

使用指针动态创建二维数组

】使用指针动态创建二维数组【英文标题】:Creatinga2Darraydynamicallyusingpointers【发布时间】:2021-03-2811:04:47【问题描述】://Tryingtocreate2Darraydynamicallyusingpointers#include<stdio.h>#include<malloc.h>intmain()int*pool,**pool2,r=3,c=4; 查看详情

使用 ArrayList 创建一个动态二维整数数组

】使用ArrayList创建一个动态二维整数数组【英文标题】:UsinganArrayListtocreateadynamic2darrayofintegers【发布时间】:2019-02-2102:07:43【问题描述】:所以我试图为基数排序实现这个伪代码,但不明白如何创建一个二维ArrayList,这个代码... 查看详情

在 C++ 中使用动态内存分配创建二维数组

】在C++中使用动态内存分配创建二维数组【英文标题】:Creatinga2DArrayusingdynamicmemoryallocationinC++【发布时间】:2021-12-2013:01:19【问题描述】:我正在尝试使用动态内存分配来实现二维数组。这是我的代码:#include<iostream>usingnam... 查看详情

一维动态数组和二维动态数组的创建和使用

...型是:(void*)calloc(unsignedn,unsignedsize)calloc()函数用于向系统动态申请n个,每一个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址malloc和calloc主要差别在 查看详情

使用动态二维数组时的 C++ 分段错误(核心转储)

】使用动态二维数组时的C++分段错误(核心转储)【英文标题】:C++SegmentationFault(coredump)whenUsingdynamic2Darray【发布时间】:2016-05-2017:14:04【问题描述】:对于作业,我需要能够乘以用户输入的矩阵。为了保存矩阵,我使用了2Darray... 查看详情

在scala中使用二维数组创建特定模式

】在scala中使用二维数组创建特定模式【英文标题】:Creatingaspecificpatternwithtwo-dimensionalarrayinscala【发布时间】:2019-04-2506:36:17【问题描述】:所以我的问题是我想将二维int数组的值更改为1,以便数组看起来像这样00100011101111101110... 查看详情

C ++中动态大小的二维数组中的用户输入

】C++中动态大小的二维数组中的用户输入【英文标题】:UserInputin2-DarrayofdynamicsizeinC++【发布时间】:2020-12-1615:17:41【问题描述】:我正在尝试创建一个二维向量,该向量作为第0列将包含整数,而第1列将包含向量。例如:column[0]... 查看详情

传递给调整大小函数后使用新创建的动态数组的错误

】传递给调整大小函数后使用新创建的动态数组的错误【英文标题】:ErrorswithdynamicArraycreatedwithnewafterpassedtoresizefunction【发布时间】:2019-06-3020:00:13【问题描述】:我正在尝试使用new实现一个动态创建的数组,我想调整它的大小... 查看详情

使用 realloc 增加大小与创建更大的动态数组

】使用realloc增加大小与创建更大的动态数组【英文标题】:Usingrealloctoincreasesizevscreatingbiggerdynamicarray【发布时间】:2020-04-1018:18:53【问题描述】:我问这个问题是为了学习;通常我会使用向量或链表来解决这个问题。如果动态... 查看详情

如何定义一个动态的数组?

...指针数组中的每一个指针分配一个一维数组空间,这样便动态定义了二维数组事实上,我认为指针数组的主要用途,就在于动态定义多维数组for(inti=0;i<size;i++)p[i]=newint[Column];运行完毕后,一个二维数组便被动态的成功建立。动... 查看详情

如何获取动态分配的二维数组的大小

】如何获取动态分配的二维数组的大小【英文标题】:Howtogetthesizeofdynamicallyallocated2darray【发布时间】:2012-09-2000:38:15【问题描述】:我已经动态分配了二维数组。这是代码int**arrofptr;arrofptr=(int**)malloc(sizeof(int*)*2);arrofptr[0]=(int*)ma... 查看详情

动态创建二维素组

...据取出,知道列数,而行数是不确定的),这是我们需要动态创建数组:两种方法:1.转化为一维数组申请2.先申请全部行首指针,再按行逐行申请1.a=(int*)malloc(sizeof(int),(unsigned)m*n);使用的时候就和一般的二维数组一样。举个例子... 查看详情

动态创建二维数组

vector创建二维数组初始化二维数组vector<vector<int>>ivec(n,vector<int>(m));//n*m的二维vectorvector<vector<int>>ivec(n,vector<int>(m,0));//n*m的二维vector,所有元素为0动态创建m*n的二维方法一:vector< 查看详情

如何动态创建二维数组?

】如何动态创建二维数组?【英文标题】:HowcanIcreate2Darraydynamically?【发布时间】:2015-07-1505:34:21【问题描述】:我正在尝试创建二维数组,但出现错误。这是我的代码:varcleanArr:Array=newArray();for(vari:int=0;i<arr.length;i++)cleanArr[i][... 查看详情

使用 MSVC C++ 编译器创建动态大小的数组

】使用MSVCC++编译器创建动态大小的数组【英文标题】:CreatingdynamicsizedarrayusingMSVCC++compiler【发布时间】:2019-06-1205:48:47【问题描述】:我正在使用VisualStudio2013Express和MSVC编译器。执行以下代码行时出现错误。#include<iostream>us... 查看详情

基于用户输入的二维动态阵列

】基于用户输入的二维动态阵列【英文标题】:2DDynamicArrayBasedonUserInput[duplicate]【发布时间】:2019-02-2010:36:36【问题描述】:场景:从文件中读取数字并相应地创建动态二维数组数据文件第一行代表房间,其余行代表房间人数例... 查看详情

C++:使用迭代器构造一个二维动态分配的数组

】C++:使用迭代器构造一个二维动态分配的数组【英文标题】:C++:usingiteratortoconstructa2Ddynamicallyallocatedarray【发布时间】:2020-06-0316:18:59【问题描述】:我是C++新手,我正在尝试创建一个具有动态分配二维数组的构造函数的类。... 查看详情

java示例代码_创建动态二维数组[JAVA]

java示例代码_创建动态二维数组[JAVA] 查看详情