C语言中malloc()和free()函数的理解
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。以下仅供参考!
C++ 中malloc()和free()函数的理解
关于malloc和free这两个函数,malloc的用法示例:int *p=(int *)malloc(2*sizeof(int)); 它表示在堆中开辟一块大小为2*sizeof(int)的一块内存空间,p指向这块内存空间的起始地址,malloc前面的(int*)表示这块空间用来存储int型数组。开辟了这块空间后,可以修改这个空间中的值,例如为*p,*(p+1)做赋值操作,如果再次使用malloc函数,例如再写一个 int *q=(int *)malloc(2*sizeof(int)); 此时开辟的.以q为起始地址长度为2*sizeof(int)的空间是不会覆盖p所指向的空间的。但是,如果在int *q=(int *)malloc(2*sizeof(int));之前写一个free(p),那么,q所指向的空间则有可能覆盖p指向的空间。所谓的free(p)操作,其实是修改p所指向的空间的标记值,让其可以被覆盖。尽管执行了free(p),p仍就指向以前的起始地址,依旧可以对*p,*(p+1)赋值,并且可访问他们(例如输出)。
代码如下:
1234567891011121314 | int main(){
int *p=( int *) malloc (2* sizeof ( int ));
free (p);
*p=1;
*(p+1)=2;
cout<<p<<endl<<(p+1);
cout<<endl;
cout<<*p<<endl<<*(p+1);
int *q=( int *) malloc (2* sizeof ( int ));
cout<<endl<<q<<endl<<(q+1);
cout<<endl<<*q<<endl<<*(q+1);
return 1; } |
运行结果:
补充:
int *p=(int *)malloc(2*sizeof(int)); 若要释放这段空间,必须free(p),只是单单想释放部分空间,例如free(p+1)是不允许的。
-
直接插入排序(C语言实现)
直接插入排序方法:仅有一个记录的表总是有序的,因此,对于有n个记录的表,可以从第二个记录开始直到第n个记录逐个有序的向有序表中进行插入操作,从而得到n个记录按关键字有序的表。下面一起跟着小编学习一下吧!实现一个直接插入排序的`C语言函数,要求对要排序的元素按...
-
C语言输出菱形的方法
题目:输出行列都相等的菱形,如5行5列:行列123451*2***3*****4***5*分析:当行数等于总行数的一半时,*是递增的,递增为2。当行数大于总行数的一半时,*是递减的,递增为2。设有一个行列为n的菱形,我们用变量i作为行数,以0开始,ik作为n菱第i行要输出的*个数。则i<=n的中值(用m...
-
2017计算机二级C语言精选习题
多做题有助于同学们及时检测自己的学习情况。希望提供的2017计算机二级C语言精选习题,能够帮助大家巩固所学知识,为今后的学习打好基础!(1)OSI模型的'物理层负责下列哪一种功能?A)格式化报文B)为数据选择通过网络的路由C)定义连接到介质的特征D)提供远程文件访...
-
2017年计算机二级C语言的应用
yjbys考试网为您整理了2017年计算机二级C语言的应用,更多计算机等级考试相关信息请访问应届毕业生计算机等级考试网。从前面对C语言的特点的分析中,不难看出C语言具有编程方便、语句简练、功能很强、移植性好等优点,是编程者喜欢使用的一种结构化程序设计语言。C...
相关文章
- 在Excel中使用AMORDEGRC函数的方法
- Modern Technology Makes Life More Conv英语六级作文
- The colours of Miracle高中英语作文
- Oracle认证:OracleTRUNC函数详解
- Perseverance will make you successful英语作文
- 高中生优秀英语作文:Have a break away from electronics
- malloc()和free()函数区别
- 如何运用C语言malloc和free函数
- 浅谈如何运用C语言malloc和free函数
- Choice of large enterprises or small英语四级作文