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

棋牌软件开发多少钱汉川seo推广

棋牌软件开发多少钱,汉川seo推广,只做恐怖片的网站,青岛今天发生的重大新闻目录 前提须知: malloc: 大意: 头文件: 申请空间: 判断是否申请成功: 使用空间: 结果: 整体代码: malloc申请的空间怎么回收呢? 注意事项: free:…

目录

前提须知:

malloc:

大意:

头文件:

申请空间:

判断是否申请成功: 

使用空间:

 结果:

整体代码:

 malloc申请的空间怎么回收呢?

注意事项:

free:



前提须知:

为什么要有动态内存分配 ?

我们已经掌握的内存开辟⽅式有:

int val = 20;//在栈空间上开辟四个字节
char arr[10] = {0};//在栈空间上开辟10个字节的连续空间
  • 上述开辟内存空间的特点——空间申请之后不容易调整,或者说不能够进行调整,且数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整。
  • 而就算是变长数组也只是说数组的大小可以使用变量来指定,而一旦数组创建好后,依然是不能调整大小
  • 而对于申请的空间大小不能灵活的调整,C语言就给了: 动态内存管理,给程序员权限,自己申请,自己使用,使用完后,自己释放。

而开辟和释放所需要用到的函数就是malloc与free

  • malloc是用来申请内存的
  • free是用来释放内存的

malloc:

C语⾔提供了⼀个动态内存开辟的函数:

 void* malloc (size_t size);

大意:

想要多少字节就向内存申请多少个字节, 申请成功后会返回一共空间的起始地址,开辟失败会返回空指针(NULL)。

头文件:

#include <stdlib.h>

申请空间:

malloc(10 * sizeof(int));
//申请10个整型的空间 - 40个字节

判断是否申请成功: 

if (p == NULL)
{perror("malloc");return 1;
}
  • 冷知识:return 0 ;表示一共主函数的结束,也表示着一个正确的返回值,而在此时的return 1;表示的是一个返回失败的意思,或是说申请空间失败。
  • return 1;也可以用return 2;或者return 3;表示,只要表示return 0;就行。 

因为申请成功会返回起始地址,而返回的类型是void*所以我们要进行使用的时候需要进行转化,且我们要使用这个空间时得找一个相对因的变量指针进行存放空间起始地址。

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

使用空间:

int i = 0;
for (i = 0; i <10; i++)
{*(p + i) = i;
}for (i = 0;i < 10; i++)
{    printf("%d",p[i]);return 0;
}
  •  p+i表示地址,*(p+i)表示地址所指向的元素,所以这是给每个不同地址的不同的元素赋值。
  • p[i]相当于*(p+i)

 结果:

整体代码:

int main()
{int *p = (int*)malloc(10 * sizeof(int));if (p == NULL){perror("malloc");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;}return 0;
}

 malloc申请的空间怎么回收呢?

  1. free回收
  2. 自己使用free不释放的时候,程序结束后,也会由操作系统回收
  3. malloc是堆区上申请内存

 

注意事项:

  • 如果开辟成功,则返回⼀个指向开辟好空间的指针。
  • 如果开辟失败,则返回⼀个 NULL 指针,因此malloc的返回值⼀定要做检查。
  • 返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使⽤的时候使⽤者⾃⼰来决定。
  • 尽量使用free函数进行回收函数,如若使用系统回收,若申请的空间过大,或进行多次申请空间,且不使用free进行回收,系统内存空间可能会出现不够
  • 如果参数 size 为0,malloc的⾏为是标准是未定义的,取决于编译器。 

free:

C语⾔提供了另外⼀个函数free,专⻔是⽤来做动态内存的释放和回收的,函数原型如下:

void free (void* ptr);

 free函数  只能  ⽤来释放动态开辟的内存。

  • 如果参数 ptr 指向的空间不是动态开辟的,那free函数的⾏为是未定义的。
  • 如果参数 ptr 是NULL指针,则函数什么事都不做。
  • malloc和free都声明在 stdlib.h 头⽂件中。
int main()
{int *p = (int*)malloc(10 * sizeof(int));if (p == NULL){perror("malloc");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;}free(p);//释放p = NULL;return 0;
}

free(p);
p = NULL;

  • p内存放的是申请的空间的起始位置。
  • 而free只是把p指向的空间回收了。
  • 而对于以上两段代码我们还得让p指针忘记申请空间的空间起始地址,不然p会变成野指针。
http://www.15wanjia.com/news/25619.html

相关文章:

  • 工业设计产品分析案例seo网站优化助理
  • 怎么往网站里做游戏无锡网络推广平台
  • 品牌网站建设 app建设中国十大企业管理培训机构
  • 网站开发感想网络营销方案
  • 西安手机商城网站建设重庆seo什么意思
  • 关于网络营销的网站搜索引擎优化排名seo
  • 南京高端网站定制网络营销怎么推广
  • 网站建设有什么品牌关键词文案生成器
  • 早教网站建设方案网络营销的核心
  • 网站推广怎么做关键词全文搜索引擎有哪些
  • 铁盒 东莞网站建设最新国际消息
  • 政府门户网站建设问题互联网推广是什么工作内容
  • 网站如何做流量赚钱郴州网站建设网络推广渠道
  • wordpress4.9.2当阳seo外包
  • 百度商桥怎么嵌入网站优化营商环境的措施建议
  • 数字今天科技 网站软文推广代理平台
  • 南通网站建设外包seo广告优化
  • 服务器与虚拟主机百度关键词优化平台
  • wordpress 修改为中文字体长沙网站seo收费标准
  • 好的做蛋糕网站bt蚂蚁磁力
  • 怎么用vps的linux做网站搜索引擎优化seo多少钱
  • 凯里做网站网站模板购买
  • 常州天宁区做网站公司网站优化公司排名
  • 重庆网站制作珠海公司做网站怎么赚钱
  • 做网站需要准备哪些西地那非
  • 自助建站最好的平台企业查询系统官网天眼查
  • 做木材生意的外贸网站百度下载安装2021最新版
  • 信息类网站有哪些ios微信上的pdf乱码
  • 做任务的电脑网站北京seo优化哪家公司好
  • 网站用什么字体做正文公司广告推广方案