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

做音乐网站曲库在哪找广东整治互联网霸王条款

做音乐网站曲库在哪找,广东整治互联网霸王条款,b2b电子商务模式有哪些网站,办公室设计平面图目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的&#…

目录

1 野指针

1.1 成因

1.2 如何规避野指针

2 assert 断言

2.1 用法

2.2 assert 的优点

2.1 assert 的缺点

3 小注解

3.1 Debug 和 Release 


1 野指针

【概念】: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)


1.1 成因

(1)指针未初始化

(2)指针越界访问

//VS2022,x64
#include<stdio.h>
int main()
{int arr[5] = { 1,2,3,4,5 };	 //arr[0]~arr[4]int* p = arr;for (int i = 0; i <= 5; i++)	//当i=5时,*(p + i) 表示 arr[5],越界{printf("%d ", *(p + i));	//输出结果 1 2 3 4 5 -858993460}return 0;
}

(3)指针指向的空间被释放

#include <stdio.h>
int* test()
{int n = 100;	//n为局部变量,当函数调用结束,//n的空间也会被销毁return &n;
}
int main()
{int* p = test();printf("%d\n", *p);	//在VS上可以运行,但是会报警告return 0;
}

1.2 如何规避野指针

(1)如果明确知道指针指向哪里就直接赋值地址,如果不知道指针应该指向哪里,可以给指针赋值 NULL。

#include<stdio.h>    //使用NULL必须包含这个头文件
int main()
{int* p = NULL;return 0;
}

(2)小心指针越界

(3)指针变量不再使用时,及时置NULL,指针使用之前检查有效性

#include<stdio.h>
int main()
{int arr[5] = { 1,2,3,4,5 };int* p = &arr[0];int i = 0;for (i = 0; i < 5; i++){*(p++) = i;		//先解引用再++}//此时 *p 表示 arr[5],已经越界p = NULL;//下次使⽤的时候,判断p不为NULL的时候再使⽤//...p = &arr[0];//重新让p获得地址if (p != NULL) //判断{//...}return 0;
}

(4)避免返回局部变量的地址,如造成野指针的第3个例子,不要返回局部变量的地址。


2 assert 断言

2.1 用法

assert.h 头文件定义了宏 assert() ,用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行。这个宏常常被称为“断言”。

assert(p != NULL)

assert() 宏接受⼀个表达式作为参数。如果该表达式为真(返回值非零), assert() 不会产生任何作用,程序继续运行。如果该表达式为假(返回值为零), assert() 就会报错,在标准错误流 stderr 中写入一条错误信息,显示没有通过的表达式,以及包含这个表达式的文件名和行号。

有同学会觉得这不就跟 if 一样吗,他的好处非常多,请接着往下看


2.2 assert 的优点

assert() 的使用对程序员是非常友好的,

使用 assert() 有几个好处:

  1. 能自动标识 文件 和 出问题的行号
  2. 无需更改代码就能开启或关闭 assert() 的机制。如果已经确认程序没有问题,不需要再做断言,就在 #include 语句的前面,定义⼀个宏 NDEBUG 。 然后重新编译程序,编译器就会禁用文件中所有的 assert() 语句。如果程序又出现问题,可以移除这条 #define NDEBUG 指令(或者把它注释掉),再次编译,这样就重新启用了 assert() 语句。
#define NDEBUG
#include <assert.h>

2.1 assert 的缺点

assert() 的缺点是,因为引入了额外的检查,增加了程序的运行时间。

⼀般我们可以在 Debug 中使用,在 Release 版本中选择禁用 assert 就行,在 VS 这样的集成开 发环境中,在 Release 版本中,直接就是优化掉了。这样在debug版本写有利于程序员排查问题, 在 Release 版本不影响用户使用时程序的效率。


3 小注解

3.1 Debug 和 Release 

在VS上编写代码的时候,就能看到有 Debug 和 Release 两个选项,分别是什么意思呢?

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序; 程序员在写代码的时候,需要经常性的调试代码,就将这里设置为 debug ,这样编译产生的是 debug 版本的可执行程序,其中包含调试信息,是可以直接调试的。

Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的, 以便用户很好地使用。当程序员写完代码,测试再对程序进行测试,直到程序的质量符合交付给用户使用的标准,这个时候就会设置为 release ,编译产生的就是 release 版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。


http://www.ds6.com.cn/news/116592.html

相关文章:

  • 东莞常平哪里好玩给网站做seo的价格
  • wordpress仿百度文库seo标题优化的心得总结
  • 网站开发建设步骤打开百度网站首页
  • 朝阳网站建设 百子湾怎么发外链
  • 西安自助建站系统网络营销优化
  • 山西长治做网站公司有哪些营销培训课程2022
  • 企业网站建设怎么样做会计分录厦门seo服务
  • 苹果网站做的好的点seo关键词优化是什么意思
  • 区块链 网站 怎么做百度极速版app下载安装
  • 凡客优品网站优化的意义
  • 网站建设公司哈关键词排名优化提升培训
  • 营销型网站十大参考标准搜索百度app下载
  • 音乐网站页面设计成都专业的整站优化
  • 网站制作流程一般制作流程?在线html5制作网站
  • 武汉建设网站最近七天的新闻重点
  • 在线黑科技网站推广一次多少钱
  • 高安做网站新手做网络销售难吗
  • 物流网站的建设方案总结推广软文案例
  • 在欣欣网上做网站效果如何查看浏览过的历史记录百度
  • 图片网站源码asp谷歌paypal官网注册入口
  • 山东做网站建设公司信阳搜索引擎优化
  • 自己做一网站济南seo网络优化公司
  • 广东省建设协会网站优化人员是什么意思
  • 直播网站建设需要多少钱itme收录优美图片官网
  • 牛什么的网站建设电子商务营销策略有哪些
  • 做网购的有哪几个网站建网站找哪个平台好呢
  • 定制网站建设宝安西乡一个人怎么做独立站shopify
  • 住房和城乡建设部网站证书查询今日新闻头条10条
  • wordpress 安装乱码信息流广告优化
  • 溧水城乡建设局网站免费制作自己的网页