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

什么是网站建设与维护seo值怎么提高

什么是网站建设与维护,seo值怎么提高,铁道部网上订票网站素材,做新浪微博网站需要目录 本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 动态内存管理—自己维护自己的内存空间的大小 首先我们申请一个变量,再申请一个数组 这是我们目前知道的向内存申请…

目录

本章重点

为什么存在动态内存分配
动态内存函数的介绍
malloc
free
calloc
realloc
常见的动态内存错误
几个经典的笔试题
柔性数组
动态内存管理—自己维护自己的内存空间的大小
首先我们申请一个变量,再申请一个数组

这是我们目前知道的向内存申请空间的一种方法 

但是这两种申请空间大小的方法有一个问题就是他的内存大小是不能被改变的

那么我们今天就引入动态内存分配这个知识点

首先我们来看一下malloc这个函数

Allocate memory block:开辟内存空间(块)

size_t size:size表示我要划分的字节,这40个字节有自己的起始位置,把起始位置的地址给你返回来,这40个字节的用途是不确定的,所以返回为void*,我们按照自己想要的类型进行强制类型转换,那么我们有没有申请空间的时候申请失败,,如果我的内存总共就8个G/16个G,所以一旦开辟失败就返回空指针(NULL)

现在我们来看代码(malloc函数如何使用)

#define CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.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
#include<stdio.h>
#include<string.h>
#include<stdlib.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,就好像是一条野狗,我们可以拿一根绳子把它拴在树上,希望大家能够理解

但是嫩你只顾申请但是不释放,这样就可能会导致内存泄漏的问题,给大家写一个死循环的开辟内存的代码

当然我的电脑比较落后一点,所有设施都稍微要落后一点,所以当时我运行起来就有一点卡,浏览器就被卡出去了,其实内存泄漏是非常危险的,感兴趣可以尝试一下,运行起来代码打开任务管理器可以发现他达到一定程度就会稳定下来,说明现代的电脑是非常聪明的

#include<stdio.h>
int main()
{while (1){malloc(1);}return 0;
}

本章终

 

 

http://www.hrbkazy.com/news/13023.html

相关文章:

  • 手机网站代码最好的bt种子搜索神器
  • 网站设计的发展趋势惠州seo博客
  • 子域名绑定wordpress子目录苏州seo关键词优化软件
  • 苏州做企业网站有哪些江苏网页设计
  • 做网站 工资高吗教师遭网课入侵直播录屏曝光广场舞
  • 电商平台推广方式快手seo
  • 十大景观设计公司厦门seo优化
  • 公司网站怎么做网站备案互联网哪个行业前景好
  • 网站开发套餐关键词优化的建议
  • b2b网站建设费用建站网站关键词优化
  • 美图在线图片编辑器seo快速优化文章排名
  • 公司做普通网站seo推广优化服务
  • 免费建立小程序网站学大教育培训机构怎么样
  • 网站开发有哪些要求网络营销的4p策略
  • 史先生 网站建设网络建站
  • vue做的网站大全网址最全的浏览器
  • 外贸网站建设是什么百度网盘手机版
  • 做安装系统网站有钱赚吗网站建设公司
  • 太原网站建设 网站制作百度商家
  • 织梦做商城网站济源新站seo关键词排名推广
  • 公司微信网站建设方案长沙网络推广
  • 做网站必须要认证吗免费发帖论坛大全
  • 网上兼职做论坛版主 网站编辑广州seo站内优化
  • 做网站的工作时间网络营销的主要传播渠道
  • 有好的网站推荐一下吗做销售最挣钱的10个行业
  • 编写网站 语言武汉百度推广入口
  • 排名前十的室内设计公司常德网站优化公司
  • .la域名的门户网站web成品网站源码免费
  • 北京智联招聘官方网站做家政民生热点新闻
  • 南宁网站建设教学百度收录域名