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

东莞网站搭建建站公司百度客服人工电话24小时

东莞网站搭建建站公司,百度客服人工电话24小时,展会信息网,wordpress主题腾讯EDC前言 (1)几天前在一个交流群中看到有人说,面试问malloc(0)会怎么样是真的恶心。 (2)这个突然激起了我的好奇心。居然还可以malloc(0)?! (3)经过测试最后,发现…

前言

(1)几天前在一个交流群中看到有人说,面试问malloc(0)会怎么样是真的恶心。
(2)这个突然激起了我的好奇心。居然还可以malloc(0)?!
(3)经过测试最后,发现是可行的。经过互联网的查找,肯哥的交流群以及自己的理解,梳理成这篇博客。
(4)肯哥博客主页:架构师李肯;
(5)感慨一下,群里面的大佬们不愧是有多年开发经验。看待问题一针见血。一下子就找到了问题所在,自己还是太肤浅了。顺便提一句,听说C陷阱这本书里面也有讲解这部分的知识。虽然久仰大名,但是一直没买。

malloc(0)运行结果

(1)我使用printf打印出指针指向的区域。然后使用malloc_usable_size()函数检测申请到的内存大小。顺便使用strcpy()函数检测该区域是否传入数据。
(2)结果发现,程序可以正常运行。没有报错,不是空指针,从malloc_usable_size()函数返回的结果来看,申请到了一个24字节的空间。

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>int main()
{char* p=malloc(0);printf("p = %p \r\n",p);strcpy(p,"abc");	printf("malloc_usable_size(p) = %ld \r\n",malloc_usable_size(p));free(p);p = NULL;return 0;
}

在这里插入图片描述

代码解析

(1)查阅的网上的各式各样的资料之后,术语太多,真心看不太懂。于是就打算在肯哥的交流群问问。本来自认为问出了一个高质量的问题。没想到,真小丑啊,哈哈哈哈。
(2)群昵称 码匠许师傅-9年 的大佬,马上给我扔出来一个链接;这个直接是C语言的官方定义,里面明确表明了,如果malloc传入0,会产生的结果。
(3)官方解释:
If size is zero, the behavior is implementation defined (null pointer may be returned, or some non-null pointer may be returned that may not be used to access storage, but has to be passed to std::free).
翻译结果:如果尺寸为零,行为是实现定义的(可能返回空指针,或者可能返回一些可能不用于访问存储但必须传递给 std::free 的非空指针)。
(4)什么意思呢?
<1>也就是说,如果malloc传入的值是0,那么这个行为可以被允许通过的。
<2>但是,这个行为最后产生的结果,是返回的一个空指针,或者是一些可能不能被访问的内存。(注意:这里是可能不能被访问,我上面运行结果显示可以被访问,并不冲突)
<3>最后,这里还表明,这个malloc返回的值,最终需要经过free()函数进行释放。
(5)那么还有一个问题,为什么我这里malloc(0)返回的是一个24字节的空间呢?这个所有人的都是24字节吗?
不是的,通过查阅网上的资料显示,不同环境下,malloc(0)返回的空间可能不同。

malloc(-1)是否被允许

(1)既然malloc(0)是被允许的,那么malloc(-1)呢?从运行结果来看,是会出现报错的。
(3)为什么malloc(0)可以,而malloc(-1)不行呢?这是因为,在C标准中规定了,malloc中传入的参数必须为无符号数据。但是我查看网络上的资料发现,有些人说传入-1是可以运行通过的,可能是编译器存在问题,将-1解析成了0xff ff ff ff(一般来说,数字默认4字节,而-1补码是这个)。

在这里插入图片描述

总结

(1)malloc(0)这个行为是被C语言标准所允许的。
(2)malloc(0)返回的不一定是空指针,不同环境产生的结果不同。
(3)malloc(0)返回的指针指向的空间,可能不能被访问。(再次强调,是可能!!!)
(4)malloc(0)返回空间,要根据环境来定。
(5)malloc(0)所产生的指针,需要传递给free()进行释放。

http://www.dinnco.com/news/4200.html

相关文章:

  • 政府网站建设应急预案网络营销手段有哪些
  • 做网站教程pdf营销策划方案ppt
  • 网站开发开发需求文档模板网络营销推广有哪些方法
  • 网站开发税率税种网络营销swot分析
  • 挂别人公司做网站可以吗百度推广渠道商
  • 建设网站需要备案么自媒体培训
  • 网站丢失了怎么办百度小程序优化排名
  • 网站title标点改动 影响公司网站设计制作
  • 河北网站建设电话久久seo综合查询
  • 企业资质证书查询官方网站企业seo服务
  • 建设银行网站怎么短信转账种子搜索神器网页版
  • 用axure做网站原型图店面怎么做位置定位
  • 佛山外英语网站制作网络营销怎么推广
  • 网站开发美工绩效考核新疆头条今日头条新闻
  • 网站建设前期规划论文深圳外包seo
  • 网站建设与规划结课论文关键词优化是什么意思
  • 语文建设网站自己建网页
  • 聊城有什么网站制作公司上首页的seo关键词优化
  • 网站空间租用网页制作素材模板
  • 网站建设 成都今网科技凡科网站官网
  • 有空间有域名怎么做网站软文标题例子
  • wordpress 新浪微博登入郑州seo推广优化
  • 门户网站建设的重要作用google国际版入口
  • 网站的制作网站建设详细方案
  • 国内做网站上市公司重庆seo代理计费
  • 山东网站制作设计国外免费推广网站有哪些
  • 中国航天空间站最新消息seo 网站优化推广排名教程
  • 磁县网站制作公司百度指数大数据
  • 有没有可以做游戏的网站吗重庆疫情最新消息
  • wordpress去视频广告插件seo软文代写