
C\C++
文章平均质量分 79
Qsir
这个作者很懒,什么都没留下…
展开
-
VisualStudio C++内存泄漏的检测方法(二)
代码#define _CRTDBG_MAP_ALLOC#include <iostream>#include <crtdbg.h>using namespace std;void test1() { int* p = new int[10]; //int* p = (int*)malloc(sizeof(int) * 10);}void test2() { int *p = new int[20]; //int* p = (int转载 2021-03-05 15:32:34 · 571 阅读 · 0 评论 -
Visual Studio中检测内存泄漏的方法(一)
有些内存泄露是不会dump出来详细信息的,只会给出内存块号,这种情况一下一般可以用一下方法调试出来。这两天调一个程序,发现每次退出都有内存泄漏,在此总结一个调试内存泄漏的好方法。对于比较明显的内存泄漏,vc2008是比较容易定位的,在Debug模式F5运行,退出时会列出引起内存泄漏的问题代码所在文件及行号;但如果是比较隐蔽的内存泄漏,Output输出窗口只会输出部分信息,形式如下:Detected memory leaks!Dumping objects ->...转载 2021-03-05 11:47:12 · 1007 阅读 · 0 评论 -
C++之Lambda表达式
1. 概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类型、{函数体}.2. Lambda 语法分析2.1 [函数对象参数]标识一个 Lam转载 2021-03-04 13:01:46 · 260 阅读 · 1 评论 -
C标准中一些预定义的宏,如__FILE__,__func__等
C标准中一些预定义的宏 C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。 宏 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 __LINE__ 代表当前源代码中的行号的整数常量 __TIME__ 源文件编译时间,格式微“hh:mm:ss” __func__ 当前所在函数名 对于__FILE__,__LINE__转载 2021-03-04 09:23:07 · 295 阅读 · 1 评论 -
C/C++开发中防止头文件被重复引入的3种方法
我们在用 C 语言开发软件时,经常使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复 #include,此方式在 C++ 多文件编程中也很常用。 举个例子,如下是一个 C++ 项目,其内部含有 school.h 和 student.h 这 2 个头文件以及 main.cpp 源文件,其各自包含的代码为://student.hclass Student { //......};//school.h#include "student...原创 2021-02-26 16:15:33 · 1981 阅读 · 1 评论 -
华为C语言编程规范(精华总结)
目录1、代码总体原则2、头文件2、函数3、标识符命名与定义4、变量5、宏、常量6、表达式7、注释8、排版与格式9、代码编辑编译“编写程序应该以人为本,计算机第二。” ...转载 2021-02-25 15:21:43 · 2149 阅读 · 0 评论 -
C++: int int& int * int**的区别、联系和用途
1、int;int是C++关键字,表示整型,其大小是32位有符号整型,表示的范围是-2,147,483,648 到2,147,483,647;在声明和定义变量时使用,它表示的意思是所声明或所定义的变量为整型变量。如果其用于函数参数时,其传递方向为值传递,即只能将实参的值传递给形参,而不能将形参的值传递给实参。例如:通过这种方式去进行交换两个数是无法达到目的的。例子1:#include<iostream>using namespace std;voidsw.转载 2020-06-10 17:18:48 · 1045 阅读 · 0 评论 -
C++对象内存模型
0.前言文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能有所不同。文章如果有解释不清、解释不通或疏漏的地方,恳请指出。回到顶部1.何为C++对象模型?引用《深度探索C++对象模型》这本书中的话:有两个概念可以解释C++对象模型:语言...转载 2019-07-15 13:33:12 · 387 阅读 · 0 评论 -
浅谈C/C++引用和指针的联系和区别
为什么C/C++语言使用指针?答案:①一方面,每一种编程语言都使用指针。不止C/C++使用指针。每一种编程语言都使用指针。C++将指针暴露给了用户(程序员),而Java和C#等语言则将指针隐藏起来了。“Everything uses pointers. C++ just exposes them rather than hiding them,”It's easier to gi...转载 2019-06-21 17:37:03 · 227 阅读 · 0 评论 -
【C++】利用Visual Studio 2008编写C++,Visual Studio 2008的基本使用
现在很多高校还是利用Visual C++ 6.0这一经典版本在教C++,很多人对自己第一个程序的回忆是利用Visual C++ 6.0用C语言写的Helloworld,之后再学习C++的类,不过还是在使用Visual C++ 6.0。于是Visual Studio对Visual C++ 6.0界面的布置改动得比较大,有大部分人如果要写C/C++还是会使用Visual C++ 6.0,甚至苦苦寻找w...转载 2019-04-16 15:18:15 · 2739 阅读 · 0 评论 -
16道嵌入式C语言面试题(转载)
转自:http://blog.chinaunix.net/uid-26495963-id-3165021.html预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法...转载 2019-03-14 14:35:27 · 428 阅读 · 1 评论 -
VC环境下的静态库(lib)使用和动态库(Dll)的使用(清晰版)
VC环境下的静态库使用一.静态库包括.lib和.h文件,在工程中使用静态库分为3步:<1>在工程中加入静态库,有三种方法: **方法一:项目设置中引用.lib,project-> setting-> link-> object/library modules中添加.lib;(可以在这里指定路径,也可以在project>se...转载 2019-03-07 10:14:10 · 2051 阅读 · 0 评论 -
C/C++语言中联合体union的妙用
联合体union的基本概念在C/C++语言中,有时需要在同一段内存单元中存放不同类型的变量,如把一个整形变量int、一个字符型变量char和一个双精度实型变量double放在同一个地址开始的内存单元中,这3个变量虽然在内存中占的字节数不同,但都从同一地址开始,使用覆盖技术,后一个数据覆盖了前面的数据。这便是联合体union(或者叫共用体)诞生的目的所在。其主要特点是:union中可以定义多...转载 2019-01-16 14:52:47 · 1990 阅读 · 0 评论 -
windows应用程序框架及实例
应用程序框架:同一类型应用程序的结构大致相同,并有很多相同的源代码,因此可以通过一个应用程序框架AFX(Application FrameWorks)编写同一类型应用程序的通用源代码。主要向导:Datebase Project:创建数据库项目MFC ActiveX Control Wizard:创建基于MFC的ActiveX控件MFC AppWizard[dll]:创建基于MFC...转载 2018-07-25 19:15:03 · 2031 阅读 · 0 评论 -
C++串口同步和异步的读取与串口设备编程
本文主要讲述如何对串口进行高效率的读写,当串口中数据到达时立即读取进行处理,以及如何将该方法运用到串口设备编程中。为了使得程序更加清晰文中的代码去除了异常处理的情况。文中加粗的文字相应的比较重要,需要多注意。当然文中会有错误,欢迎评论指正。 文章中代码下载地址 http://pan.baidu.com/s/1pLsP9wB 1、COM口WindowsAPI函数CreateFi...转载 2018-07-26 09:30:08 · 2372 阅读 · 0 评论 -
VS2010 VC++ 编译出错 ---error LNK2005: "public: virtual __thiscall CMemDC::~CMemDC(void)"
uafxcwd.lib(afxglobals.obj) error LNK2005: "public: virtual __thiscall CMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) already defined in MultiColorPlotCtrl.obj上面是意思是,连接器说,我找到了两个定义,一个在 uafxcwd.lib(afxg...转载 2018-08-14 13:23:43 · 1644 阅读 · 0 评论 -
C/C++ 踩过的坑和防御式编程
相信你或多或少地用过或者了解过 C/C++,尽管今天越来越少地人直接使用它,但今天软件世界大多数软件都构筑于它,包括编译器和操作系统。因此掌握一些 C/C++ 技能的重要性不言而喻。这场 Chat 本人将从小处入手,以亲身踩过的坑作为示例,讲述一下 C++ 的常见的坑,以及其防御方法——防御式编程。主要内容包括: C/C++ 基础知识简介 C/C++ 常见问题复现示例 ...转载 2018-08-15 16:17:14 · 868 阅读 · 0 评论 -
C Runtime Library 的来历
由于我看到的文章也是转载的且未提供原文链接,所以这里没有提供原文链接,深表抱歉! msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能. C Runtime Library 的来历, API, STL, ...转载 2019-01-04 16:41:20 · 356 阅读 · 0 评论 -
一个完整的Windows程序框架
前面我们演示了带界面的Windows程序,但那仅仅是一个弹窗,调用MessageBox函数就可以实现,不是一个真正意义上的窗口。我们通常所说的窗口包含最大化、最小化、关闭按钮,也包含菜单、单选框、图像等各种控件。一个完整的Windows程序框架: #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, W...转载 2019-01-18 16:08:53 · 2926 阅读 · 0 评论 -
cdecl、stdcall、fastcall函数调用约定区别
论函数调用约定 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算...转载 2019-01-08 11:40:16 · 420 阅读 · 0 评论 -
C、C++不定参数的使用
不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。原理刚学C语言的时候,一般人都会首先接触printf函数。通过这个函数,你可以打印不定个数的变量到屏幕,如...转载 2019-01-08 14:56:53 · 953 阅读 · 0 评论 -
__typeof__() 、 __typeof() 、 typeof()的区别
摘要:__typeof__()和__typeof()和typeof()都是C的扩展,且意思是相同的,标准C不包括这样的运算符标准C:ANSIC,ISOC,StandardCC89C99C11这些其实都是一个东西,只是不同时期的叫法。GNUC:(革奴C)支持标准C的基础上做了一些C扩展在标准C中写扩展是以__开头,所以在标准C中要写成__typeof()或__typeof__()在GNUC中支持直接...转载 2019-01-15 17:31:56 · 12443 阅读 · 0 评论 -
详解 GNU C 标准中的 typeof 关键字
如果你是 C++ 程序员,应该接触过 C++11 里的 decltype 操作符,它的作用是自动推导表达式的数据类型,以解决泛型编程中有些类型由模板参数决定而难以(甚至不可能)表示的问题。其实这个特性在 C 语言中也早有类似的实现,GNU C 标准中的一个扩展特性 typeof (PS: 不是 typedef)作用与 decltype 类似,我们来看看这个关键字该怎么用。先来看一个最简单的例子...转载 2019-01-15 17:33:04 · 318 阅读 · 0 评论 -
C89和C99区别
1.对数组的增强 可变长数组1 C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定 其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的. 可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的.可以变化的只是数组的大小. 可以使用*来定义不确定长的可变长数组。 数组声明中的类型修饰符...转载 2019-01-16 09:28:49 · 2243 阅读 · 0 评论 -
VC编写的程序不能在其他机器上运行的解决方案
有的时候,你在Visual C++上面经过好几个月的辛勤努力,终于将程序编写完成并且测试完毕,然而当你试图在客户的发布机上运行刚写好的程序时,有可能会碰到类似下面的错误,操作系统告诉你“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”: 一般情况下,这个问题都是由于程序不能找到所需要的C运行库(CRT)而引起的。 在Windows XP SP...转载 2018-07-17 17:07:20 · 975 阅读 · 0 评论