当前位置:网站首页>用指针和malloc定义一个数组
用指针和malloc定义一个数组
2022-08-09 15:03:00 【翔在天上飞】
①malloc作为一个包含在<stdlib.h>头文件下的函数,用于申请空间。
②我们平常定义数组一般习惯性的就直接定义,比如int a[5],此处就是直接定义了一个数组,数组内的元素都是int型,并且有五个,从一开始就确定了数组a的大小,并且无法被改变。并且变量被存放在栈区,栈区的变量都是有系统自己开辟空间存储,自动销毁空间释放的。
③其实,还有一种定义数组的方式,那就是借助人为申请空间的方式定义一个数组。请看如下程序:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a = (int *)malloc(sizeof(int[5]));
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
int i;
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
free(a);
return 0;
}
④定义的方法是首先得定义一个指针,然后在这个指针的指向下,利用malloc去开辟一个自定义大小的空间。
⑤此方法定义的数组变量被存放在堆区,是由用户自己开辟和释放的。
⑥下面来看结果运行结果:

可见结果是理想无误的。
⑦使用这种定义方式可根据变量 n 动态申请内存,不会出现存储空间浪费的问题。但是,如果程序执行过程中出现空间不足的情况时,则需要加大存储空间,此时需要进行如下操作:
1.新申请一个较大的内存空间,即执行int * temp = new int[m];
2.将原内存空间的数据全部赋值到新申请的内存空间中,可以使用memecpy函数;
3.将原来的堆空间释放,即执行delete [] p; p = temp;
⑧当然,如果是在C++中,可以使用标准模板库(STL),像vector可以很方便
边栏推荐
猜你喜欢

蒙特卡罗 Monte Carlo 模拟

Face recognition sample code analysis (1) - program parameter analysis

Vim实用技巧_2.普通模式和插入模式

MySQL数据库基本知识

Heap series _0x04: Internal structure of heap (_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)

Vim practical skills_4. Manage multiple files (open + split + save + netrw)

【QT】窗口几何布局学习

Unity Shader 透视效果/XRay

堆(heap)系列_0x02:堆的前世今生(WinDbg+Visual Studio汇编)

Heap series _0x03: heap block + malloc/new bottom layer + LFH (WinDbg analysis)
随机推荐
unity3d画布/UI自适应屏幕的方式
九章云极DataCanvas APS机器学习平台获得中国信通院“领先级”评级
Time series analysis
Janus介绍
Detailed Explanation of Software Secure Memory Area
idea 用不了Ctrl+Shift+F快捷键全局搜索。
Introduction to common commands in SQLMap
堆(heap)系列_0x08:NT堆调试支持_立刻发现调试支持(DPH)
堆(heap)系列_0x07:NT堆调试支持_滞后发现调试支持
Principal Component Analysis - Applications of MATLAB in Mathematical Modeling (2nd Edition)
Gray Relevance Matrix——Application of MATLAB in Mathematical Modeling
Unity Shader零基础入门3:逐像素光照、Blinn-Phong、透明度
7.25-7.29学习总结(状态机及PWM原理)
软件测试工具清单
Vim实用技巧_3.可视模式和命令模式
Data Fitting Methods Application of MATLAB in Mathematical Modeling (Second Edition)
堆(heap)系列_0x06:NT全局标志和gflags.exe一页纸
聚集索引和非聚集索引
unity中AO、metallic、roughness贴图的使用方式
Vim实用技巧_4.管理多个文件(打开 + 切分 + 保存 + netrw)