Linux申请空间(malloc)
1、进程在执行的过程中,malloc申请空间,不使用时,没有free就会出现内存泄漏;
如果进程结束了,那么所有向操作系统申请的内存都会被回放(释放);
2、申请1G或者更大空间,到底能不能成功?
如果当前物理内存剩余空间够用,那么申请空间可以成功
如果当前物理内存空间不够,看有没有虚拟空间,若有,观察虚拟内存+物理内存是否满足申请大小,否则不能成功。
sudo swapoff -a;关闭虚拟内存
sudo swapon -a;开启虚拟内存
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#include<assert.h>
#include<string.h>int main()
{char *s=(char*)malloc(1024*1024*1024);assert(s!=NULL);memset(s,0,1024*1024*1024);printf("over\n");exit(0);
}
申请空间超过内存空间,把一部分放到交换空间(虚拟内存)
申请空间——>物理内存剩余空间+虚拟内存
3、32位操作系统进程4G虚拟空间分布
4.父进程堆区申请的空间复制后,子进程也有一份
也需要释放
fork会把进程的上下文都复制一遍,如果是malloc申请的话
内核会给子进程分配和父进程一样的空间,父子进程都需要free。
代码验证:
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#include<assert.h>
#include<string.h>int main()
{char *s=(char *)malloc(128);assert(s!=NULL);pid_t pid=fork();assert(pid!=-1);if(pid==0){strcpy(s,"child");}else{strcpy(s,"parent");}printf("s=%s\n",s);free(s);exit(0);
}
Linux申请空间(malloc)相关推荐
- Linux 基础知识(2)---Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
Linux内核空间内存申请函数kmalloc.kzalloc.vmalloc的区别 kzalloc与kmalloc区别 这个函数就是原来的两个函数的整合 , 即原来我们每次申请内存的时候都会这么 ...
- 动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间
动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间 1. 动态内存申请的底层系统调用 动态内存申请函数根据申请的内存大小选择不同的系统调用,小于128K选择brk系 ...
- linux内核空间内存动态申请
参考:<linux设备驱动开发详解>华清远见 ,--人民邮电出版社 用户空间内存动态申请 在用户空间动态申请内存的函数为 malloc(),这个函数在各种操作系统上的使用是一致的,mall ...
- 结构指针的坑之(定义结构体指针时并没有分配存储空间,所以要用malloc()申请空间)
这段代码会报错,核心转储 #include<stdio.h> #include <string.h>struct role // 定义一个结构体 { // char name[ ...
- 空间申请(malloc)与释放(free)——C语言
空间申请(malloc)与释放(free)--C语言 文章目录 空间申请(malloc)与释放(free)--C语言 1. malloc与free函数 1. malloc与free函数 参考链接: h ...
- C语言malloc申请空间函数的两种返回方法
测试ok,代码如下: /********************************************* 功能:malloc申请空间函数的两种返回方法* 作者:lml 时间:2020年4月1 ...
- linux 进程装入 物理内存 页表,linux进程空间一步步探究.doc
linux进程空间一步步探究.doc linux 进程地址空间的一步步探究 讲师:程姚根 我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内 ...
- C语言如何动态分配空间:malloc
一般的变量在定义是就要确定大小,但是有的时候不知道用户的需要,就比如说排序,你不知道用户想要给几个数排序,所以为了保险起见往往是定义一个很大的变量,而实际上用户可能只需要给5个数排序,你却int k[ ...
- C/C++动态申请空间方式
C语言中用malloc/free: C++里用new/delete; 1:C语言动态申请一维数组: #include<stdio.h> #include<stdlib.h> i ...
最新文章
- html如何用v-for遍历,v-for循环遍历
- SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话
- 有用的sql(mysql)
- 将一个信号同步到clk中的通式
- 一个全栈式的应用集成平台,打破“信息孤岛”
- CMapStringToPtr::SetAt\CAsyncSocket
- 【蓝桥杯嵌入式】【STM32】1_LED之点灯仪式
- Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
- Mysql数据库乱码
- abp 应用层异常处理(自动控制器中)
- 如何绘制用例图 - How to Draw Use Case Diagram
- Panel的基本用法
- 防止vps上SSH被猜测密码
- jQuery自定义插件
- 中国3D打印软件市场现状分析及发展前景预测报告
- 华大 HC32L130 调试问题总结
- java内存分析详解_深入java内存查看与分析详解
- ip camera如何将流媒体信息传送到流媒体服务器,IP Camera远程监控系统的设计与实现...
- mysql算gps距离_mysql JS 计算两GPS坐标的距离函数:
- IT产品是计算机类产品吗,IT产品是什么
热门文章
- class wizard entry is missing的解决方法
- 10年,知乎为何依旧“赚钱难”?
- 可信计算和可信赖计算的渊源
- 猿人学第四题-CSS加密【雪碧图、样式干扰】
- centos+tomcate + https协议 SSL证书制作、部署支持iphone、ipa下载安装.ipa程序
- BeautifulSoup爬取笔趣阁小说并下载到本地
- 自动化错误mysql vba,c - 运行时错误-214767259(80004005)自动化错误未指定错误 - Excel VBA - UIAutomation - 堆栈内存溢出...
- stop the bibi
- Sklearn 模型保存和使用
- php利用wsh突破函数禁用执行命令(安全模式同理)