C/C++
文章平均质量分 70
壮二宝
这个作者很懒,什么都没留下…
展开
-
头文件 string.h cstring string 区别
头文件 string.h cstring string 区别1.#include //不可以定义string s;可以用到strcpy等函数using namespace std;#include //可以定义string s;可以用到strcpy等函数using namesapce std; #include //转载 2016-11-17 11:22:19 · 315 阅读 · 0 评论 -
脱胎换骨的现代C++有哪些出奇的新特性?
从C++11开始,我们都称之为现代C++。现代C++的新特性皆围绕C++之父Bjarne指明的两条主线:一是直接硬件映射,二是零开销抽象。这也正好体现了C++的蜕变方向:更快、更好用。【从C++98到现代C++】要聊现代C++,还得从C++的发展历程说起:▪ 1998年,C++标准委员会发布了C++语言的第一个国际标准,也就是我们现在使用的最多的C++98;▪ 2003年,转载 2017-03-24 18:18:31 · 3411 阅读 · 0 评论 -
脱胎换骨的现代C++有哪些出奇的新特性?
从C++11开始,我们都称之为现代C++。现代C++的新特性皆围绕C++之父Bjarne指明的两条主线:一是直接硬件映射,二是零开销抽象。这也正好体现了C++的蜕变方向:更快、更好用。【从C++98到现代C++】要聊现代C++,还得从C++的发展历程说起:▪ 1998年,C++标准委员会发布了C++语言的第一个国际标准,也就是我们现在使用的最多的C++98;▪ 20转载 2017-08-16 11:01:35 · 265 阅读 · 0 评论 -
C++构造函数、析构函数与抛出异常
C++构造C++构造函数、析构函数与抛出异常【本文链接】http://www.cnblogs.com/hellogiser/p/constructor-destructor-exceptions.html【问题】构造函数可以抛出异常么?析构函数可以吗?【分析】从语法上来说,构造函数和析构函数都可以抛出异常。但从逻辑上和风险控制上,构造函数可以,析构函转载 2017-08-09 17:32:44 · 385 阅读 · 0 评论 -
“烫”字和“屯”字的原因
Visual Studio中,未初始化的栈空间用0xCC填充,而未初始化的堆空间用0xCD填充。而0xCCCC和0xCDCD在中文GB2312编码中分别对应“烫”字和“屯”字。如果一个字符串没有结束符'\0',输出时就会打印出未初始化的栈或堆空间的内容,这就是大名鼎鼎的“烫烫烫”、“屯屯屯”乱码。原创 2017-08-14 18:00:14 · 496 阅读 · 0 评论 -
C++智能指针简单剖析
导读最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑。C++面试过程中,很多面试官都喜欢问智能指针相关的问题,比如你知道哪些智能指针?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等……。而且在看开源的C++项目时,也能随处看到智能指针的影子。这说明智能指针不仅是面试官爱问的题转载 2017-09-14 17:35:49 · 239 阅读 · 0 评论 -
共享内存无锁队列的实现
共享内存无锁队列的实现躲在树上的数据库 2017-11-06 211标签: 消息队列 , 无锁队列作者:范健导语: 共享内存无锁队列是老调重弹了,相关的实现网上都能找到很多。但看了公司内外的很多实现,都有不少的问题,于是自己做了重新实现。主要是考虑了一些异常情况加强健壮性,并且考虑了C++11的内存模型。为什么需要共享内存无锁队列?为了便于查转载 2017-11-09 14:52:24 · 4731 阅读 · 2 评论 -
C++源文件的后缀名问题(关于.h,.hh,.hpp,hxx . .cpp,.c,.cc,.cxx 一些小知识)
C++源文件的后缀名问题VC里用cpp作后缀名, 在GCC里默认采用C、cc、cxx作为后缀名.cpp, .h (VS file).cc, .h (GCC file) C中:头文件后缀名: .h源文件后缀名: .c C++中:头文件后缀名: .h, .hpp, .hxx 源文件后缀名:.cpp, .cc, .cxx转载 2017-11-14 16:00:55 · 40302 阅读 · 3 评论 -
读书笔记:提高C++性能的编程技术
pdf下载地址:http://download.csdn.net/download/u012662731/10121312读书笔记:提高C++性能的编程技术2014-02-12 20:57 by 付哲, 1083 阅读, 0 评论, 收藏, 编辑Efficient C++ Performance Programming Techniques第1章 跟踪范例1.1转载 2017-11-21 10:10:10 · 373 阅读 · 0 评论 -
使用 GDB 恢复堆栈信息
用 C/C++ 编写的程序, 如果遇到 Segmentation Fault 则可以通过生成 coredump 来进行调试, 根据记录的信息定位到出错代码行. 但很多时候可能用 gdb 打开 coredump 文件查看堆栈时, 却出现一堆问号, 无法直接定位到出错代码行. 本文介绍另一种方法来还原错乱的堆栈信息.例如, 下图是 coredump 后用 gdb 看到的堆栈信息, 可以看到这些转载 2018-01-31 15:07:27 · 1200 阅读 · 0 评论 -
理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
一、指针数组与数组指针先看两行代码,猜猜哪个是数组,哪个是指针int *p[5];int (*p)[5];有没有很简单,但是有很多初学者很是分不清楚;第一个是指针数组,第二个是数组指针。且看小僧给大家捋一捋,首先要明白符号优先级问题,“[ ]”的优先级高于“*”,所以p先和谁结合就表示谁。"int *p[5]" p先和[ ]结合,理所当然是数组了,只不过数组元素为 int *转载 2018-02-06 11:12:57 · 211 阅读 · 0 评论 -
protobuf any 的操作c++
person.protosyntax = "proto3"; import "google/protobuf/any.proto";message Apply_data{ uint32 apply_data_id = 1; uint64 apply_time = 2;}message Apply_list{ uint...原创 2019-03-02 16:46:16 · 5425 阅读 · 1 评论 -
C++ 虚函数表解析
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是转载 2016-12-27 10:34:06 · 196 阅读 · 0 评论 -
socket笔记
socketsocket是一种ipc方法(介于传输层和应用层的一组api),允许同一主机或网络连接的主机上的应用程序交换数据。现代操作系统支持下列socket:AF_UNIX: 允许同一主机的应用程序进行通信。AF_INET: 允许通过ipv4连接的主机的应用程序进行通信。AF_INET6: 允许通过ipv6连接的主机的应用程序进行通信。AF:地址族(address family)转载 2016-12-19 20:17:56 · 3511 阅读 · 0 评论 -
C++的巅峰如何到达
C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它 语言较高。而它的学习难度,主要来自于它的复杂性。现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替 C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。 现在学习java、C#等语言的人数远转载 2016-12-08 14:22:41 · 488 阅读 · 0 评论 -
C语言预处理命令总结大全
C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境。本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。ANSI标准定义的C语言预处理程序包括下列命令:#define,#error,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#undef,#line,#p转载 2016-12-16 18:32:10 · 260 阅读 · 0 评论 -
我使用过的Linux命令之ar - 创建静态库.a文件/关于Linux静态库和动态库的分析
用途说明创建静态库.a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到。关于Linux下的库文件、静态库、动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料【3】《关于Linux静态库和动态库的分析》。 常用参数格式:ar rcs libxxx.a xx1.o xx2.o转载 2016-12-21 13:32:20 · 4112 阅读 · 0 评论 -
编程基础-----c++与c调用so文件/C和C++之间so库的互相调用/GCC -lm 是什么意思
1.制作so文件:libadd_c.soadd.c:[cpp] view plain copy print?int add(int a, int b) { return a + b; } 编译:gcc -shared -fpic -lm -ldl -o libadd_c.so add.c转载 2016-12-21 11:33:49 · 3727 阅读 · 0 评论 -
说说计算机中的异常
开篇异常这个名词应该大家都不陌生,很多人都听说过。系统调用知道吧?其实系统调用也是一种异常。但是具体的什么是异常呢?他在计算机中有什么作用?他是如何工作,如何被我们利用的?我想很多人都还不都是很清楚。、了解异常有诸多好处,可以让你更好的理解操作系统和应用程序的交互,更好的理解并发等。所以今天就简单的来说一下异常。 注:本博文图片来源《Computer system-转载 2016-12-21 20:33:37 · 596 阅读 · 0 评论 -
位操作
设置数据类型的某一位为0或1,并获取;#include "stdafx.h"#include #include using namespace std;typedef unsigned char uint8;typedef unsigned int uint32;// 获得32位无符号整形data的第id位的值uint8 get_bit(uint32 id,ui原创 2016-12-22 20:22:18 · 471 阅读 · 0 评论 -
C++ new A 和 new A() 的区别详解
原文出处: 江南烟雨,2013-04-13 我们在C++程序中经常看到两种new的使用方式:new A以及new A()。那么这两种究竟有什么区别呢?调用new分配的内存有时候会被初始化,而有时候不会,这依赖于A的类型是否是POD(Plain old data)类型,或者它是否是包含POD成员、使用编译器生成默认构造函数的类。附:POD类型POD是Plain转载 2016-12-26 17:43:10 · 5496 阅读 · 2 评论 -
C/C++遍历文件夹和文件
原文出处: 踏莎行hyx 本方法可用于windows和linux双平台,采用C/C++标准库函数。库函数包含头文件 #include用到数据结构_finddata_t,文件信息结构体的指针。123456789struct _finddata_t转载 2016-12-26 19:39:21 · 646 阅读 · 0 评论 -
VS开发人员查看C++类内存布局
方法一:1.打开VS自带的命令行工具。当然,你把cl.exe的目录写到环境变量中,直接在cmd中也能用。这是VS2012的。下面这个是VS2013的。都一样。2.使用cl命令的/d1 reportAllClassLayout或reportSingleClassLayoutXXX选项。这里的reportAllClassLayou转载 2016-12-26 20:48:42 · 3140 阅读 · 0 评论 -
C++多重继承要慎用!
原文出处: bourneli 本文目的前几天在写程序时,发现一个多重继承类,调用virtual函数会出现一个问题,该问题比较隐晦(因为不会引起程序core dump等严重的效果,我是很偶然的在单元测试中发现的),不容易定位,但是如果出现,可能对程序逻辑会带来致命的问题。一个例子转载 2016-12-26 21:10:56 · 624 阅读 · 0 评论 -
C++类内存分布
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到转载 2016-12-19 20:06:30 · 212 阅读 · 0 评论 -
一道c++面试题的思考与学习(类内存布局)
先上面试题,问打印结果是什么?#include class A{public: void fun() {printf("A");}};class B : public A{public: virtual void fun(){printf("B");}};class C : public B{public: void f转载 2016-12-19 20:07:44 · 496 阅读 · 0 评论 -
go和c++获得枚举类型的string值和int32值
//c++void getEnumName() { string str = Report_type_Name(Report_type::REPORT_TYPE_NAME_INDECENT); cout << str << endl; ...原创 2019-05-23 12:24:32 · 1442 阅读 · 0 评论