malloc-关于51单片机动态数组开辟问题。

问题描述

关于51单片机动态数组开辟问题。

我想要达到的效果是开辟一个动态数组,数组的长度每次都会改变。遇到的问题是,发现上一次的首元素的内存一直无法释放,于是本人通过调试测试每一次数组各元素的值来判断哪里出错,发现程序到space=NULL,space[0]还是没有被清零,以下是我的测试程序

解决方案

其实你可以这样做,不用声明数组,而是声明一个char* array这样的指针变量,用的时候把这个指针变量指定到要用的内存(这块内存可以事先分配好或指定到一个程序不可能用到的足够大的内存),用的时候可以像数组一样用的,比如array[0],array[1]这样用,跟数组的用法一样,这个方法还有一个好处,由于array是指针变量,所以你可以随便指定到某个内存访问其中的内容,希望能帮到你。

解决方案二:

我也是这样想的 可是内存不能释放 我私信给你 你看下

时间: 2025-01-27 15:46:58

malloc-关于51单片机动态数组开辟问题。的相关文章

51单片机数组赋值,中断不运行

问题描述 51单片机数组赋值,中断不运行 #include #define uchar unsigned char #define uint unsigned int uchar num,num1,begin,temp,flag; uchar a[10]; void delay(uint x) { uchar y; for(x;x>0;x--) for(y=255;y>0;y--); } void init()//初始化 { TMOD=0x20; TH1=0xfd;//9600 TL1=0xf

c语动态数组 的问题 把两个有序的数组合成一个数组

问题描述 c语动态数组 的问题 把两个有序的数组合成一个数组 想问下动态数组的问题,要两个有序的数组合成一个,一次性完成. #include stidio.h int main() { int *a;//是不是这里用指针,等下就可以用realloc了. int *b; int i=0,j=0,k; printf ("请输入第一个数组:n"); while ( scanf("%d",&a[i])==1&&a[i]!='n') { i++; }

VS2013下动态数组二维数组读二进制文件的问题

问题描述 VS2013下动态数组二维数组读二进制文件的问题 int samples_to_read = 7200; uint8_t **caculate_a; int count2,count3; caculate_a = (uint8_t **)malloc(sizeof(uint8_t *)* 3); for (count1 = 0; count1<3; count1++){ //动态数组分配空间 caculate_a[count1] = (uint8_t *)malloc(sizeof(u

使用::std::vector&amp;lt;&amp;gt;作为管理动态数组的优先选择

摘要: 本文介绍了C++标准库中的容器类vector,分析了它的优点,并且建议在应用程序中使用它作为动态数组的优先选择,而不是MFC的CArray<>等其他类模板.最后介绍了vector的接口和使用时的注意事项. 在一些使用 MFC 的程序中,经常看到许多程序使用 CArray<>,由于 CArray<>的设计问题,造成使用它的代码的复杂化,增加了维护难度.因此建议使用 ::std::vector<> 代替 CArray<>. 另外,也看到一些程

ds18b20-关于51单片机的,DS18B20

问题描述 关于51单片机的,DS18B20 这个代码是书上的代码,我有两个问题 1.51单片机已经从DS18B20上获得了温度数据,为什么不直接拿去显示,需要用串口传递 2.comm(buff):将数组里面的温度数据传递到哪里去了? 附上代码: #include #include #define uchar unsigned char #define uint unsigned int sbit ds=P2^2; //温度传感器信号线 sbit dula=P2^6; //数码管段选线 sbit

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_   #include<stdio.h> #include<stdlib.h>   /************************************************************************/ /*数组的结构体类型                                                    */ /***************

【C/C++学院】0815-函数包装器/CPP类型转换/函数模块/动态数组

函数包装器管理内嵌函数 #include<iostream> #include<functional> //函数包装器 //第一,设计执行接口,接口设计关卡(),计数 //第二,函数包装器依赖于函数模板,实现通用泛型 //第三,函数代码可以内嵌在另外一个函数,实现函数怀孕 //函数包装器,用于管理内嵌函数,外部函数调用 //函数包装器, T数据类型, F是函数 template<typename T,typename F> T run(T v, F f) { stati

《51单片机应用开发范例大全(第3版)》——1.2 Keil Vision2

1.2 Keil Vision2 MCS-51单片机的开发除了需要硬件的支持以外,同样离不开软件.CPU真正可执行的是机器码,用汇编语言或C等高级语言编写的源程序必须转换为机器码才能运行,转换的方法有手工汇编和机器汇编两种,前者目前已极少使用.机器汇编是指通过汇编软件将源程序变为机器码的编译方法.这种汇编软件称为编译器.本节将向大家介绍目前十分流行的Keil Vision2. 1.2.1 Keil Vision2集成开发环境介绍 Keil Vision2是一个集成开发环境(Intergrated

《C语言及程序设计》实践项目——动态数组

返回:贺老师课程教学链接 [项目1-学生人数没个准]输入学生成绩,输出高于平均成绩的学生序号和成绩.其中学生人数不定,可能10个,可能1000.在录入成绩之前,学生人数由键盘输入.由于要先求出平均成绩,然后才能确定输出哪些学生的信息,所以需要一个数组先将学生信息保存下来.考虑学生人数不定,用动态数组是个更适合的方案下面的程序结构供参考: #include<stdio.h> #include_________ //m?????.h int main() { int number; //学生人数