当前位置: 首页 > news >正文

深圳福田区网站建设企业宣传网站建设需求说明书

深圳福田区网站建设,企业宣传网站建设需求说明书,做电子杂志用什么网站,苏州搜狗关键词优化目录 本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 动态内存管理—自己维护自己的内存空间的大小 首先我们申请一个变量#xff0c;再申请一个数组 这是我们目前知道的向内存申请…目录 本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 动态内存管理—自己维护自己的内存空间的大小 首先我们申请一个变量再申请一个数组 这是我们目前知道的向内存申请空间的一种方法  但是这两种申请空间大小的方法有一个问题就是他的内存大小是不能被改变的 那么我们今天就引入动态内存分配这个知识点 首先我们来看一下malloc这个函数 Allocate memory block:开辟内存空间块 size_t sizesize表示我要划分的字节这40个字节有自己的起始位置把起始位置的地址给你返回来这40个字节的用途是不确定的所以返回为void*我们按照自己想要的类型进行强制类型转换那么我们有没有申请空间的时候申请失败如果我的内存总共就8个G/16个G,所以一旦开辟失败就返回空指针NULL 现在我们来看代码malloc函数如何使用 #define CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestring.h #includestdlib.h int main() {int arr[10] { 0 };int* p (int*)malloc(40);//我们拿一个整型指针接收因为每加1就跳过一个整型这样遍历我们每一个元素就会方便一些if (p NULL){printf(%s\n, strerror(errno));return 1;}int i 0;for (i 0; i 10; i){*(p i) i;}for (i 0; i 10; i){printf(%d , *(p i));}return 0; } 我们把void*强制类型转化为Int*,我们拿一个整型指针接收因为每加1就跳过一个整型这样遍历我们每一个元素就会方便一些 如果动态内存开辟失败我就返回1 这个地方没有free并不是说内存空间就不回收了当程序退出的时候系统会自动回收内存空间 这个时候我们把free加上来看效果 #define CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestring.h #includestdlib.h int main() {int arr[10] { 0 };int* p (int*)malloc(40);//我们拿一个整型指针接收因为每加1就跳过一个整型这样遍历我们每一个元素就会方便一些if (p NULL){printf(%s\n, strerror(errno));return 1;}int i 0;for (i 0; i 10; i){*(p i) i;}for (i 0; i 10; i){printf(%d , *(p i));}free(p);return 0; } 我在free(p)出添加一个断点程序运行起来我们就直接走到了free(p)这个位置我们把代码调试起来给大家看一看 我们按住F10调试起来走到断点处打开调试窗口监视随便选一个窗口进入 这里我们为什么要输入p,10呢是因为我们的p是一个指针要加一个10才能访问到数组中的所有元素我们在按F10走出free(p)就可以看到内存被释放了但是p的值是没有变的 那既然有成功的案例那我们来看一下动态内存开辟失败的案例来看下面代码 INT_MAX表示的数字是非常的大的没有这么大的空间供你使用所以我们此时动态内粗开辟失败 常见的一些类型对应的数字表示范围的大小 #define MB_LEN_MAX 5 /* max. # bytes in multibyte char */ #define SHRT_MIN (-32768) /* minimum (signed) short value */ #define SHRT_MAX 32767 /* maximum (signed) short value */ #define USHRT_MAX 0xffff /* maximum unsigned short value */ #define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ #define INT_MAX 2147483647 /* maximum (signed) int value */ #define UINT_MAX 0xffffffff /* maximum unsigned int value */ #define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */ #define LONG_MAX 2147483647L /* maximum (signed) long value */ #define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */ #define LLONG_MAX 9223372036854775807i64 /* maximum signed long long int value */ #define LLONG_MIN (-9223372036854775807i64 - 1) /* minimum signed long long int value */ #define ULLONG_MAX 0xffffffffffffffffui64 /* maximum unsigned long long int value */ 对于下面这个代码我们画个图给大家在解释一下 int arr[10] { 0 };int* p (int*)malloc(40);if (p NULL){printf(%s\n, strerror(errno));return 1;} 这里我们想一下我们前面讲到的野指针 free(p); p NULL; malloc申请free释放我们暂时把p给释放了但是p如果记得这个地址那么p有朝一日能够找到这个内存区域但是这个内存区域已经还给操作系统了已经不属于我们了这个时候我们把p拿起来去访问就成为了野指针为了防止p成为空指针了我们把它置为空把他赋值为NULL就好像是一条野狗我们可以拿一根绳子把它拴在树上希望大家能够理解 但是嫩你只顾申请但是不释放这样就可能会导致内存泄漏的问题给大家写一个死循环的开辟内存的代码 当然我的电脑比较落后一点所有设施都稍微要落后一点所以当时我运行起来就有一点卡浏览器就被卡出去了其实内存泄漏是非常危险的感兴趣可以尝试一下运行起来代码打开任务管理器可以发现他达到一定程度就会稳定下来说明现代的电脑是非常聪明的 #includestdio.h int main() {while (1){malloc(1);}return 0; } 本章终
http://www.hkea.cn/news/14373800/

相关文章:

  • 品牌网站定制网站首页广告
  • php 开发手机网站福建厦门网站建设
  • 网站建设宣传软文范例网站备案帐号
  • 北京网站建设公司iis网站访问权限设置
  • 网站建设 腾云网站建设有什么出路
  • 网站建设理由和目的wordpress里添加字体
  • cn域名有名的网站合阳县建设局网站
  • 企业为什么做网站优化推广wordpress分页效果
  • 楚雄做网站的公司北京中小企业网站建设
  • 网上书城网站开发说明书WordPress多功能主题Cosy
  • 企业手机网站建设效果网络购物平台哪个最好
  • 网站建设企业属于什么类型的公司建设网站比较好公司吗
  • 网站项目验收确认书深圳购物网站建设
  • 网站开发开票交税东莞企业网站制作出售
  • 营销型网站举例wordpress 任务插件
  • 教育网站建设的意义wordpress建英文
  • 凌美上海建设工程网站德州王霞网站建设
  • 济南美赞网站建设公司黄岩网站建设
  • 成绩查询系统网站开发网站建设外包协议
  • 阿里云做网站教程中国设计网作品欣赏
  • 网站配色 橙色简单详细搭建网站教程
  • 物价工作信息网站建设德阳互联免费云主机
  • 凡科是免费做网站吗什么是网站设计种类
  • 电子商务网站建设规划说明书乡村网站建设
  • 哪里有学做视频的网站3湖南招投标信息网官网
  • 承德网站制作加盟大良网站建设收费
  • 公司做网站的费用入账免费宣传网站
  • 网站建设公司发展专做国外采购的网站
  • 企业网站优化三层含义浙江建设三类人员证书查询
  • 旅游网站建设和实现网页设计工具一般有哪几种