平时写c++程序需要注意什么

C/C++的注意事项 1)调用LoadLibrary,LoadLibraryEx,CreateProcess,ShellExecute等进行模块加载的函数时,指明模块的完整(全)路径,禁止使用相对路径,这样就可避免从其它目录加载DLL。因此,在使用n系列拷贝函数时,要确保正确计算缓冲区长度,同时,如果你不确定是否代码在各个编译器下都能确保末尾有0时,可以适当增加1字节输入缓冲区,并将其置为\0,以保证输出的字符串结尾一定有\0。不可以用legacy的字符串拷贝、输入函数,这些函数的特征是:可以输出一长串字符串,而不限制长度。 阅读详情

记一些几年前写c++经常会犯的一些错误,想到了其他的后面再加上

1、变量、函数命名不规范。

如果一个变量命名随意,比如表示一个学生的年纪,如果这样定义int a;相信一个月后自己再看代码,都不知道a表示什么意思,

如果用int age; 来表示,就清晰很多了。

再说函数,如果需要一个连接数据库的函数,写成connect();这是connect什么呢。如果写成connectDatabase()就很清晰了。

2、传递指针没有判断是否为空。传递对象、变量没有判断是否有效。

如果有一个接口是 void insertItem(Student *stu,int num); 其中Student表示学生类。如果在该函数中直接使用stu->getAge()。

这时候就无法保证程序的安全性,万一指针为空的话,调用getAge();就会导致程序崩溃。所以需要接口第一句就需要加判断if(stu==nullptr) return; 来确保程序的安全。如果num使用前不判断,比如说对num进行一个除的操作。此时num为0,那程序也会down掉。需要加上类似if(num==0) num=1;来确保num被除数不为0。

但凡使用的是外部传递进来的参数,使用之前一定要判断有效性,才能写出健壮性的代码。

3、new以后没有记得释放内存。

如果在一个循环中,频繁的new,又不释放,会导致程序内存不断增加,最终内存溢出,程序崩溃。曾经看过一个程序,没有操作放了10分钟,内存增加了100多M。new了要记得detele,谁new的,谁去释放,或者采取智能指针的方式来负责对象的销毁。

4、delete指针后没有记得把指针置为nullptr

如果delete ptr; 没有加ptr=nullptr,后面有接口有如下的判断 if(ptr!=nullptr) ptr->setNum();就会导致出现异常。 

5、试图返回局部对象的指针和引用。

如果返回一个局部对象的引用,比如说 Student& getInstance() {Student stu; stu.setAge(10);Student &r=stu; return r; }然后getInstance.getAge();会导致输出的值并不是10,而是一个随机值。因为局部对象存在于栈中,函数一结束,就会被释放,这时候用这个没有内存的地址去调用接口,当然无法取得之前局部对象设置的值。

指针如果在局部new,并且返回出去使用,那么谁去销毁呢。让使用接口的客户去销毁,是不合理的,因为如果使用者忘记销毁,那么就会造成内存泄漏。

6、打开了文件流,却没有进行关闭。

类似以下,file.open("log"); file.read(");但是直到函数结束,都没有file.close()。这会导致再次打开文件时,发现文件句柄被占用,导致打开失败。类似的还有tcp/udp的close()等等。凡是打开的流操作,都要记得close()掉,避免不必要的错误产生。

7、使用了lock()后,在某些条件的return没有unlock()。

这会导致死锁现象的产生,切记,凡是lock()的地方,一定要在函数可能退出的地方进行unlock()。

欢迎大家补充经验

蓝桥杯软件比赛中的注意事项(C/C++) 一. 关于时间安排 比赛时间4个小时,注意以提交题目的系统时间为准,做完一题交一题,避免最后因为时间不够没交完题。在4个小时中同一道题可以提交多次,每次提交都会覆盖上一次的代码。 二. 关于填空题 今年蓝桥杯是5道填空,5道大题。一般第一道填空是签到题,也就是我们所说的送分题,可以通过一系列手段(比如Excel、word、电脑自带计算器、手算等)来得分。 解决填空题一定要用最快的方法,能用工具解... 阅读详情

相关推荐

Mac上写C++

用惯Windows的同学可能刚开始用Mac的时候并不知道如何写C++,我刚开始在Mac上写C++的时候也遇到过这个困扰,Mac上并没有Windows上自己用习惯的Visual C++,下面我分享一下个人在写C++的时候所用的两个方法: 1.使用Xcode, 直接App Store搜索下载即可, 下载完以后第一次打开会出现We...

weixin_34235135的博客 3461

C++程序设计及注意事项

指的是在同一个域中,用同一个函数名来定义多个函数,但其参数类型应有不同,编译器将通过实参和形参的类型、个数等确定最佳匹配调用,不同类函数不采用函数重载。//声明一个max函数,其返回类型为int,两个输入为a,b,其类型均为int。多人编辑同一个项目时,一般在前面加static,使其只在某特定文件中使用,而不是全局,避免两人采用了同一函数名报错。6.C++允许为形参指定默认值,如果调用时该形参变量未给定实参值,则使用该形参值,如果给定了,则采用实参值。//采用以下方式,可以将后面定义的变量,在前面使用。

doudou2weiwei的博客 421

c++调用python程序(使用popen)

之前写了一个python程序,基本功能是检测表计读数,然后输出。当时认为python写比较简单,而且正好在学习python,于是就写了......后来发现python打包成exe然后打开实在是太慢了,等待时间超长,而且exe文件很大,才发现python对程序发布很不友好,平时写些小程序也就罢了,真到正式场合有点...emmm掉链子,正好客户那边用的是c++,于是思考如何用c++调用python。第...

情绪的沸点的博客 2026

C++编程注意事项

1、所有成员变量在构造函数中进行初始化操作,如指针赋值为空,bool赋值为FALSE(默认为TRUE); 2、构造函数与析构函数配对出现,执行反向操作,保证执行析构之后,没有遗留问题存在; 3、如果需要进行复杂的初始化操作,不要放置在构造函数中实现,提供初始化函数,如Initialize; 4、对应初始化的析构,也可以提供相反操作,如Reset; 5、所有申请的内存空间应及时释放,new运...

weixin_30751947的博客 267

c++实际编程中应该注意的一些问题

c++实际编程中应该特别注意的一些问题 ,讲的很详细,设计到的面很光,几乎涵盖c++的编程中设计到的所有问题,讲解很细致,容易懂。

对话系统简介

《文本上的算法》学习笔记1、问答型1.1、基于语义分析的方法1.2、基于信息抽取的方法1.3、端对端的方法2、任务型2.1、生成式模型( Generative Model )2.2、判别式模型( Discrimitive Model )2.3、规则系统3、闲聊型3.1、规则方法3.2、生成模型3.3、检索方法 个人认为NLP领域最难的方向可以说是阅读理解与文本生成/摘要,而对话系统,尤其是闲聊常常...

盘一哈nlp 6751

C++开发的几点注意事项

1. 如果一个类的声明和实现都

lemon的空间 1140

PADS VX2.7学习记录05-PADS Layout设计文件Gerber等输出整理

在“PDF Document”栏中,依次选中除REF-TOP和REF-BOT之外的文件,单击图标,将其余PDF Document文件进行删除,如图所示。然后单击【生成PDF】按钮,即可创建一份PDF格式的位号图。

tianpu2320959696的博客 1023

C++学习总结 写C++程序时的注意事项

1. 包含以下头文件时 #include 要加上这个 using namespace std;       命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"        当使用时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正

dearwind153的专栏 973

Comsol实战:铌酸锂x切与z切参数设置全攻略(附电场强度归一化技巧)

本文详细介绍了在Comsol Multiphysics中设置铌酸锂x切与z切晶体参数的全流程,包括晶体取向定义、电光系数配置及关键光学参数计算。重点讲解了电场强度归一化这一实用技巧,帮助用户提升仿真分析效率,为设计电光调制器等集成光子器件提供精准的仿真基础。

year5的博客 583

《小白入门:无人机电调 ESC 的 PWM 接口特性、主流协议与使用指南》

电调是无人机的 “动力中枢”,其 PWM 接口是入门的基础,而 SBUS、DroneCAN 等协议则代表了更高阶的控制方式。小白学习时,需先掌握 PWM 的基本特性和连接方法,再根据场景选择合适的协议,同时严格遵守使用注意事项(如电源匹配、校准步骤、安全操作)。随着实践深入,逐步理解 “协议差异” 和 “系统协同”,才能让无人机更稳定、安全地飞行。

bother3000的博客 3768

Linux系统中如何编写C/C++程序

很多学习Linux系统的小伙伴都免不了要在Linux系统中进行C/C++程序的编写、编译与执行,下面就来谈谈如何进行C/C++的编程。 以下操作均在CentOS 7中执行,顺便提一句,如果你用的是RedHat系统的话,要果断放弃,换成CentOS或者别的,因为RedHat系统安装C/C++编译器需要收费,网上有教程如何更换yum源,但是本人的亲身噩梦体验强烈建议大家:果断放弃RedHat,换成C...

weixin_45138590的博客 1万+

RAG——RAG 索引(文档解析技术)

本文介绍了RAG系统中文档解析的关键技术,重点分析了如何通过LangChain的Document Loaders处理多种格式文档。文章指出高质量文档解析对RAG系统效果的决定性作用,并详细讲解了PDF、TXT、Word等常见格式的解析方法。作者提供了代码示例和Gitee开源项目链接,特别强调了PDF解析的深入方案,同时介绍了相关依赖库的安装配置。文章还展示了如何定义通用文档加载方法,为开发者提供了实用的技术参考。

小志的博客 751

C++ 轻量级 HTTP 库 cpp-httplib 全面使用教程

cpp-httplib是一款轻量级、单头文件的C++ HTTP客户端/服务器库,解决了传统C++网络开发中繁琐的底层协议处理问题。它支持HTTP/1.1协议,提供GET/POST/PUT/DELETE等请求方法,内置文件上传、SSL加密、同步/异步操作等功能。开发者只需包含一个头文件,就能快速搭建HTTP服务或调用接口,无需处理socket绑定、协议解析等底层细节。该库支持跨平台开发,具有简洁直观的API设计,特别适合需要快速实现轻量级HTTP通信的场景。通过示例展示了如何用几行代码实现服务端路由、静态资源

Small_entreprene的博客 2239

告别Qt Creator!VSCode + QMake + MinGW:从零搭建高效Qt开发环境

本文详细介绍了如何使用VSCode替代Qt Creator搭建高效的Qt开发环境,涵盖VSCode配置、QMake与MinGW集成、智能提示优化及构建调试技巧。通过实战案例展示如何提升开发效率30%以上,特别适合中大型Qt项目开发。

weixin_30466039的博客 243

8、音频运行时系统的架构设计

本文深入探讨了音频运行时系统的分层设计及其优势,包括逻辑层和物理层的功能划分。通过分层设计,开发者可以更轻松地管理和优化音频资源,确保其在不同平台上的高效运行。文章还介绍了平台适配与优化、错误处理与调试以及未来发展方向等内容,为开发者提供了宝贵的参考和指导。

juice的博客 461

平时很少注意到的宏,源于今天调试程的程序

今天偶在写一个小程序的时候,无意中冒犯了C++的关键字,郁闷了很久,才发现。当时我写了一个类,然后定义一个对象:class Test{    //};Test or; //这里触犯了C++的keyword.汗一个!故写下此文留做教训,顺便找到另外一些平时很少注意到的宏.and#define and && [keyword in C++] or#define or || [keywo

sankt的专栏 1012

基于Python的军事装备信息爬虫实战:Scrapy+Playwright+智能反反爬技术

本文将详细介绍如何使用Python构建一个高效的军事装备信息爬虫系统。我们将从基础的HTTP请求开始,逐步深入到使用Scrapy框架、Playwright浏览器自动化以及最新的反反爬技术。文章包含完整的代码实现、性能优化策略以及数据处理方案,旨在为读者提供一个全面的军事信息爬取解决方案。关键词:Python爬虫、军事装备、Scrapy、Playwright、反反爬。

2201_76125261的博客 1155

C++程序员面试要注意什么?我来聊聊顺利获得offer的六大技巧

C++程序员的薪资待遇在整个IT行业中相对较高,这是由于C++是一门相对较难的编程语言,需要掌握复杂的语法和内存管理等知识。与普通行业相比,C++程序员的优势在于薪资待遇更高、职业发展空间更大,并且有机会接触到更复杂、更有挑战性的编程问题。我希望大家通过我的经历,可以看到成功的地方和坎坷的地方。我也希望把我曾经走过的弯路分享给大家,让大家不要再走我走过的弯路,从中吸取经验。同时,我也希望大家能够深入了解程序员的职业生涯,知道这个行业的优势和不足,从而更好地规划自己的职业生涯。

m0_71628805的博客 966

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++程序员必备的面试技巧

平时可以搜集一些大厂的面试题或笔试题,放在优快云博客上,没事就翻一下,个人觉得博客是比书更好的信息载体,比如说可以是彩色的图片、可以用动图等。●善于解决问题:在面试中,经常会遇到一些难题或者意想不到的问题,这时候要保持冷静,运用自己的知识和经验,找出解决问题的方法。●注意沟通技巧:在面试中,要注意和面试官的沟通技巧,要能够清晰地表达自己的思路和想法,同时也要认真听取面试官的意见和建议。●展示自己的实际经验:在面试中,可以通过举例说明自己曾经解决过的问题,或者展示自己的项目经验,来证明自己的实力和经验。

草上爬的博客 2377

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Cpp学习——编译链接

编译链接解释

qq_41934502的博客 734

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Dev-Cpp/Mingw32 环境介绍(2)

本文转载自:http://blog.youkuaiyun.com/visioncat/archive/2004/08/04/65431.aspxDev-Cpp/Mingw32 环境介绍(2)上文回顾:  上文(《Dev-Cpp/Mingw32 环境介绍(1)》)我们知道了该如何安装和使用Dev-Cpp。并且,知道了一些有关Mingw32的一些用法和一些有关程序的介绍和使用方法。学会了一些基本操作的

cfyy的专栏 1683

C++多线程调试和测试的注意事项

在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。 在上次的帖子聊了C++多线程的跨平台问题,后来感觉意犹未尽。今天顺便说一下开发C++多线程应用程序时,有关调试和测试的一些注意事项。下面这些注意事项主要是针对C++,不过有些对于其它的

高调做事,低调做人 1745

Dev C++使用教程(使用Dev C++编写C语言程序)_dev c++怎么用

Dev C++使用教程(使用Dev C++编写C语言程序)_dev c++怎么用

xiangxue666的博客 3万+

C++第 1 个程序:hello, world!,一些小技巧!!

C++第 1 个程序:hello, world!,一些小技巧!!

青少年趣味编程 2868
上一篇: 读c++ primer 5
下一篇: 我们日复一日努力奋斗的目的是什么
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值