当前位置:首页 > 内存 > 正文

数组动态分配内存(数组内存分配)

  • 内存
  • 2024-05-30 12:57:55
  • 3042

一、c语言数组在内存中是怎么分配的?

C语言中使用的内存是虚拟内存。根据功能不同,C语言中的虚拟内存分为三类:栈区、堆区和静态数据区。

在栈区、静态数据区和堆区中,编译器负责分配,操作系统负责管理,堆区中的malloc()是动态堆内存。

扩展信息

内存分配和释放注意事项:

1并释放它。一个库函数,而不是一个系统调用

3为空

5free参数为空,函数直接返回

参考来源:—数组

参考来源:—c语言


二、C语言中二维数组如何申请动态分配内存

1.使用malloc函数首先分配第一个维度的大小,然后循环分配每个维度的大小。

2.例程,分配3行4列的二维数组:

#include
#include
intmain()
{
int**a;
inti,j;
a=(int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for(i=0;i<3;++i){//为每列分配4个大小的空间
a[i]=(int*)malloc(sizeof(int)*4);
}
//初始化
for(i=0;i<3;++i){
·//测试
输出
for(i=0;i<3;++i){
for(j=0;j<4;++j){
printf("%d",a[i][j]);
;>}
free(a);
return0;
}
/*
输出:
0123
1234
2345
*/
三、如何实现二维数组的动态内存分配?//动态分配二维空间数组
{
m_iHight=10;//二维数组的高度
m_iWidth=10;//二维数组的宽度
//动态地将二维数组m_ppTable放入内存空间
//类型为int
//m_ppTable指向数组
int**m_ppTable;
m_ppTable=newint*[m_iHight];
//动态分配int*类型的m_iHight内存空间
//分配的空间地址
for(inti=0;im_ppTable[i]=newint[m_iWidth];
//动态分配内存类型int的空间m_iWidth
//它们分配一定顺序的数值空间
}
//没有这样划分的二维空间是连续的
//可以使用m_ppTable[row][col]给两个数组维度赋值
//where0<=row//释放分配的内存空间
{
for(inti=0;idelete[m_iWidth]m_ppTable[i];//释放以行为单位的空间值
delete[m_iHight]m_ppTable;//释放地址空间列表
}