博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆区函数
阅读量:6004 次
发布时间:2019-06-20

本文共 1004 字,大约阅读时间需要 3 分钟。

070.堆函数

一个进程或者说一个程序.可能有多个线程.

单线程
每个线程都有自己专属的栈(stack).
栈的最大尺寸是固定的,在OD的右下角,我们都看到过,超过那个范围就会引起栈溢出.
堆上的内存必须手工释放(C/C++),有的编程语言比如Java、Net不需要手动管理堆内存,语言本身有GC(垃圾回收机制)则另谈.以后我们再来讨论这个问题.
函数内部的局部变量(auto以及参数)一旦,函数运行完毕,则会自动从栈上释放.
int f_abc(int p_v1,int p_v2){
// C语言的形参是从右到左入栈的.  p_v2先入栈,p_v1 后入栈.
}
malloc ();
calloc (); 第一个参数指定单位的数量. 指定一个单位的大小./
realloc()

 


#include<stdio.h>

#include<stdlib.h>
#include<string.h>

void main() {

 int * lp = (int *)malloc(10 * sizeof(int));

 free(lp); 

 // malloc只负责申请内存,但是不负责初始化内存,单独需要使用memset这个函数.

 lp = (int *)calloc(10, sizeof(int));

 //calloc这个函数,它申请的内存,会自动初始化为0.

 free(lp);

 system("pause");
}

 


#include<stdio.h>

#include<stdlib.h>
#include<string.h>

void main() {

 char * lp_1 = (char *)calloc(10, sizeof(char));

 char * lp_temp = (char*)realloc(lp_1, 13);
 //realloc可以修改申请的内存大小,不仅可以变大,还可以变小.
 if (lp_1 == lp_temp) {
  printf("内存地址一样,未发生变化!\n");
 }
 else {
  printf("内存地址不一样,发生变化!\n");
 }
 //realloc追加的内存是不会进行初始化的.

 free(lp_temp);

 system("pause");

转载于:https://www.cnblogs.com/xiaodaxiaonao/p/8053658.html

你可能感兴趣的文章
JavaScript基础---函数
查看>>
前端每日实战:120# 视频演示如何用纯 CSS 创作锡纸撕开的文字效果
查看>>
Laravel实用小功能
查看>>
Linux系统上传下载工具rz/sz
查看>>
matplotlib绑定到PyQt5(有菜单)
查看>>
利用Powershell和ceye.io实现Windows账户密码回传
查看>>
如何清理EBS R12 middle-tier cache
查看>>
Windows 8.1 今年 1 月市场份额超 Vista
查看>>
《设计团队协作权威指南》—第1章1.5节总结
查看>>
【PMP认证考试之个人总结】第 5 章 项目时间管理
查看>>
Chair:支付宝前端团队推出的Node.js Web框架
查看>>
《Total Commander:万能文件管理器》——第3.8节.后续更新
查看>>
BSD vi/vim 命令大全(下)[转]
查看>>
css3中变形与动画(一)
查看>>
[XMove-自主设计的体感解决方案] 系统综述
查看>>
设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
查看>>
【LINUX学习】磁盘分割之建立primary和logical 分区
查看>>
【YUM】第三方yum源rpmforge
查看>>
IOS(CGGeometry)几何类方法总结
查看>>
一个通用并发对象池的实现
查看>>