当前位置:网站首页>用指针和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可以很方便
边栏推荐
- 如何通过Photoshop根据纹理贴图轻松获得法线贴图
- PE格式系列_0x05:输出表和重定位表(.reloc)
- Zip包的读取与写入
- 九章云极DataCanvas APS机器学习平台获得中国信通院“领先级”评级
- 2022.7.22FPGA学习总结:项目实践——按键消抖模块
- Unity Shader零基础入门4:纹理贴图与法线贴图
- SVM Support Vector Machine - Application of MATLAB in Mathematical Modeling
- 堆(heap)系列_0x04:堆的内部结构(_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
- Unity UI框架思路与实现
- Correlation analysis
猜你喜欢
堆(heap)系列_0x05:一张图剖析堆块分配和FreeLists的联系
TOPSIS优劣解距离法
基于FTP协议的文件上传与下载
如何通过Photoshop根据纹理贴图轻松获得法线贴图
Detailed Explanation of Software Secure Memory Area
TCP/IP协议组——完整工作过程分析
NAT-UDP穿透详解与实践
Vim实用技巧_0.vim - introduction
The practical skills Vim _5. Move quickly between files and documents
Heap series _0x04: Internal structure of heap (_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
随机推荐
go使用Consul实用指南
在任务管理器中结束任务进程之后电脑直接黑屏了
Postgraduate Work Weekly (Week 4)
Excel文件解析
godot编写一个节点实时属性显示系统
unity3d画布/UI自适应屏幕的方式
Makefile通用模板
CTF online encryption and decryption and common tools
TCP/IP协议组——完整工作过程分析
架构实战营第九模块作业-毕业项目
Vim practical skills_3. Visual mode and command mode
全局服务器调度简介
properties文件的读取和写入
The practical skills Vim _5. Move quickly between files and documents
FileInputStream与BufferedInputStream的区别
初级软件测试面试题
easywsclient的DEMO测试
Heap series _0x03: heap block + malloc/new bottom layer + LFH (WinDbg analysis)
Vim实用技巧_5.在文件间和文件内快速移动
转载-文件资源管理器无响应的解决办法