
C++
文章平均质量分 67
itas109
大道至简
展开
-
C++11 http服务端和客户端库cpp-httplib
cpp-httplib是一个轻量级且易于使用的 C++11 HTTP 库,由 yhirose 开发和维护,开源协议为MIT。它支持 HTTP/HTTPS 协议,可用于创建简单的客户端和服务器应用程序。支持 Windows、macOS 和 Linux等操作系统支持 HTTP/1.1 和 HTTPS 协议支持 GET、POST、PUT、DELETE 等 HTTP 方法支持文件上传和下载支持自定义响应头和请求头支持压缩和解压缩(如 gzip)支持路由功能,可以匹配和处理不同的 URL 路径。原创 2024-11-27 23:18:54 · 818 阅读 · 0 评论 -
C++异常捕获
windows下使用_set_se_translator,linux下使用sjlj。原创 2023-10-24 19:26:09 · 368 阅读 · 0 评论 -
cmake add_subdirectory添加父级目录及其子目录的源码
add_subdirectory not given a binary directory but the given source directory "xxx/thirdlib" is not a subdirectory of "xxx/main". When specifying an out-of-tree source a binary directory must be explicitly specified.原创 2023-09-06 00:00:00 · 1174 阅读 · 0 评论 -
C++ 布置new 布局new placement new
普通new是在堆(heap)上分配空间。布置new(placement new)不申请空间,而是在已分配的空间上创建对象。布置new(placement new)的注意事项1. 布置new所使用的的空间,可以是堆(heap)空间,也可以是栈(stack)空间2. 由于布置new(placement new)并没有申请空间,在已分配空间上调用构造函数,因此需要显示调用析构函数3. 由于布置new(placement new)并没有申请空间,因此delete应该由原来分配空间的地方进行调用原创 2023-08-29 21:13:46 · 416 阅读 · 0 评论 -
C++ 对象模型 C++ Object Model
本例中,C++ 中的数据成员和C中一样,不一样的是C++中多了一个非静态成员函数print,但非静态成员函数与数据成员是分离的,并不占用类的大小。C++内存布局的额外负担有virtual引起,主要包好虚函数(virtual function)和虚基类(virtual base class)。类成员函数有三种:静态函数(static)、非静态函数(nonstatic) 和 虚函数(virtual)类数据成员有两种:静态(static) 和 非静态(nonstatic)C语言中,数据和函数是分开声明的。原创 2023-07-31 22:32:05 · 563 阅读 · 0 评论 -
C/C++函数调用栈帧及其内存布局
每一次函数的调用,都会在调用栈(call stack)上维护一个独立的栈帧(stack frame)。局部变量初始化为x=0,y=2,z=0。局部变量初始化z=0。原创 2023-06-24 13:01:15 · 1427 阅读 · 0 评论 -
C++常用第三方库
仅头文件的现代C++ HTTP/HTTPS服务端和客户端库 [MIT] (9.2k, 2023-04-05)- PostgreSQL C++客户端接口库 [BSD-3-Clause] (766, 2023-04-05)- 现代C++多线程事件驱动的网络库 [BSD] (12.9k, 2023-04-05)- MongoDB C++接口库 [Apache2] (950, 2023-04-05)- 现代C++ ORM库 [MIT] (48, 2023-04-05)- Redis C客户端接口库 [BSD]原创 2023-04-22 22:34:33 · 1421 阅读 · 0 评论 -
Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码
Dear ImGui 是一个 用于C ++的无膨胀图形用户界面库。它输出优化的顶点缓冲区,您可以随时在启用3D管线的应用程序中进行渲染。它快速,可移植,与渲染器无关并且是独立的(无外部依赖性)。Dear Imgui是一个非常轻量级的库,没有额外的外部依赖,支持跨平台,很适合用于游戏引擎。官方网站:https://github.com/ocornut/imgui。原创 2023-04-22 22:31:14 · 2204 阅读 · 0 评论 -
windows下使用umdh定位C++内存泄漏
用户模式转储堆 (UMDH) 实用工具与操作系统一起用于分析特定进程 Windows 堆分配。 UMDH 查找特定进程中的哪个例程正在泄漏内存。原创 2023-04-22 13:17:29 · 637 阅读 · 0 评论 -
Linux使用asan排查C/C++内存泄漏
Linux使用asan排查C/C++内存泄漏ASAN 早先是 LLVM 中的特性,后被加入 gcc4.8,成为 gcc 的一部分,但不支持符 号信息,无法显示出问题的函数和行数。从 4.9 开始,gcc 支持 AddressSanitizer 的 所有功能。License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎。centos7默认gcc版本为4.8.5。原创 2023-04-22 12:58:35 · 1656 阅读 · 0 评论 -
C/C++内存泄漏概述、分析、防范和排查
C/C++内存泄漏概述、分析、防范和排查狭义上,内存泄漏是指动态分配的内存未正确的释放导致的,如new之后未delete。广义上,不再使用的内存未能回收都属于内存泄漏,如已失效的全局map缓存、socket句柄、文件句柄等。对于长时间运行的服务器后台程序,内存泄漏可能造成十分严重的后果,如性能下降、程序崩溃、系统崩溃等问题。原创 2023-04-22 12:46:24 · 1607 阅读 · 0 评论 -
MSVC和MinGW导出的.dll.a和.lib相互调用
MSVC和MinGW导出的.dll.a和.lib相互调用原创 2023-04-22 12:16:04 · 3246 阅读 · 0 评论 -
VS2019使用VLD(Visual Leak Detector)检测CPP内存泄漏
在windows平台下,VLD(Visual Leak Detector)是一个比较准确的内存泄漏检测工具,支持输出检测报告。下载地址:https://github.com/KindDragon/vld。原创 2023-04-01 20:40:54 · 1427 阅读 · 0 评论 -
查看C语言库函数源码
查看C语言库函数源码。例如查找string.h头文件中的strncpy函数源码。原创 2023-01-03 23:00:00 · 1000 阅读 · 0 评论 -
C++基础(1)- 声明(前向声明 Forward Declaration)与定义
C++ 程序由各种实体组成,例如变量、函数、类型和命名空间。必须先声明其中的每个实体才能使用它们。声明指定实体的唯一名称,以及有关其类型和其他特征的信息。在 C++ 中,声明名称的位置就是它对编译器可见的位置。无法引用稍后在编译单元中某个位置声明的函数或类。这里的声明,也可以叫做前向声明(Forward Declaration),是指提前声明,但还没有给出完整的定义的声明,包括数据类型、变量、函数等。如class A表示知道有一个类叫做A,但不知道具体有哪些成员和函数。原创 2022-10-23 21:02:13 · 975 阅读 · 0 评论 -
vcpkg C++依赖包管理工具的基本使用
vcpkg 是微软开发的C/C++ 项目包管理工具vcpkg依赖包管理工具,支持windows、macos、linux。开发者不需要关心环境配置,只需一条命令就可以获得所需库。原创 2022-10-21 21:28:39 · 1324 阅读 · 0 评论 -
使用CodeBlocks搭建wxWidgets C++ GUI图形化开发环境
【settings】-【Global Variables】-【New】-【输入 wx】-【base选择 D:/wxWidgets】目前CodeBlocks 20.03最高支持的是wxWidgets 3.1.X版本,因此选择wxWidgets 3.1.7版。【File】-【New】-【Project】-【选择 wxWidgets project】-【Go】这里选择与CodeBlocks MinGW匹配的gcc810版本。建议安装到非空格目录,避免出现编译问题,如。按照include和lib的目录结构解压到。原创 2022-10-21 21:18:16 · 2243 阅读 · 0 评论 -
cmake中根据编译类型安装不同文件到程序目录
通过cmake的编译器表达式([generator expressions](https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html))来实现,形如`$`。本文主要用到两个表达式。- `$`:编译器的编译类型,如Debug、Release等- `$`:tgt所在的目录...原创 2022-08-17 23:13:22 · 441 阅读 · 0 评论 -
奇技淫巧之cmake
奇技淫巧之cmake如需转载请标明出处:http://blog.youkuaiyun.com/itas109 QQ技术交流群:129518033文章目录奇技淫巧之cmake前言0.cmake常用配置及信息展示1.mingw(gcc)生成MSVC(vs)可用的dll(.lib)2.qt调试cmake工程3.cmake下载和编译其他工程3.1 FetchContent_MakeAvailable3.2 add_custom_target4.安装编译文件5.解决-fPIC问题5.1 修改原始CMakeLists.tx原创 2020-11-02 22:05:47 · 1359 阅读 · 0 评论 -
Doxygen语法
Doxygen语法。Doxygen提供了大量特殊命令,XML命令和HTML命令。可用于增强或构建注释块内的文档。如果由于某种原因需要定义新命令,则可以通过别名定义来实现。原创 2019-01-14 16:33:58 · 1797 阅读 · 0 评论 -
使用Doxygen从C++源码自动生成CHM文档
使用Doxygen从C++源码自动生成CHM文档如需转载请标明出处:http://blog.youkuaiyun.com/itas109 QQ技术交流群:129518033目录文章目录使用Doxygen从C++源码自动生成CHM文档@[toc]前言1.Doxygen简介2.Microsoft HTML Help简介3.Doxygen和Microsoft HTML Help安装4.配置Doxygen ...原创 2019-01-04 18:59:21 · 2400 阅读 · 0 评论 -
远程调试linux下C/C++代码的调试器概述
远程调试linux下C/C++代码的调试器概述gdb lldb vscode code-server Eclipse Qt CLion Code::Blocks CodeLite Voltron gdbgui DDD一般情况下,很多时候我们会使用linux远程主机或linux虚拟机进行C/C++的代码开发工作。linux下C/C++代码的调试自然是开发环节中的重要部分。本文介绍一些常用的linux下的C/C++调试器。原创 2022-03-01 23:41:45 · 1293 阅读 · 0 评论 -
windows和linux下源码编译7-Zip(7za)
windows和linux下源码编译7-Zip(7za)7-Zip 是一款拥有极高压缩比的开源压缩软件。支持windows、linux、macOS。7-Zip版本: 21.07(2021-12-26)源码地址:https://www.7-zip.org/a/7z2107-src.tar.xz原创 2022-02-27 20:15:21 · 7180 阅读 · 0 评论 -
cmake使用不同编译器编译C++代码
元构建系统是一个生成其他构建系统的构建系统,cmake就是一个非常典型的元构建系统。本文将介绍cmake使用不同编译器编译C++代码。原创 2021-12-31 23:22:20 · 2053 阅读 · 2 评论 -
linux下调试段错误(核心已转储) Segmentation fault (core dumped)
C/C++开发者经常会遇到段错误(segfault),定位很困难。在开发环节可以用单元测试等手段,但是在线上环境可能没有基本的开发调试工具,这种情况下就需要一些调试方法。本文介绍在linux下如何调试 段错误(核心已转储) Segmentation fault (core dumped) 问题。原创 2021-04-01 21:41:41 · 3717 阅读 · 0 评论 -
C/C++构建系统简介
构建系统(build system)是用来从源代码生成用户可以使用的目标(targets)的自动化工具。目标可以包括库、可执行文件、或者生成的脚本等等。本文将对C/C++构建系统进行简单介绍。原创 2020-10-05 22:35:11 · 1525 阅读 · 0 评论 -
C++图形化GUI开发框架推荐
图形用户界面(Graphical User Interface,简称 GUI),下面介绍一下C++常用的GUI开发框架原创 2020-04-13 22:47:19 · 18413 阅读 · 1 评论 -
C/C++主流编译器推荐
C/C++主流编译器(非IDE集成开发环境)推荐原创 2020-04-13 22:44:03 · 7821 阅读 · 3 评论 -
VSCode在windows下使用MinGW-w64的gcc/g++编写调试程序
为什么会使用VSCode在windows下调试C++程序呢?windows下不是有Visual Studio吗?主要因为Visual Studio太重量级了,而且跨平台支持不够完善,因此才有了本文。本文将介绍VSCode在windows下使用MinGW-w64的gcc/g++编写调试程序原创 2019-08-18 00:44:17 · 6844 阅读 · 0 评论 -
C++程序崩溃解决方案
C++程序崩溃如何进行异常捕获处理?特别是发布版本为Release版本,要想保留现场和复现就更加困难。本文较少几种捕获程序异常定位问题的方案。原创 2018-11-02 13:24:08 · 9079 阅读 · 0 评论 -
离线数据存储和上传方案
如需转载请标明出处:http://blog.youkuaiyun.com/itas109 QQ技术交流群:129518033 解决方案下载地址:http://download.youkuaiyun.com/detail/itas109/9859688Github相关项目:https://github.com/itas109/OfflineDataStorge 引言 在网络广泛...原创 2017-06-03 16:47:30 · 7180 阅读 · 0 评论 -
个人使用C++标准类
如需转载请标明出处:http://blog.youkuaiyun.com/itas109 #ifndef __YOURCLASS_H__#define __YOURCLASS_H__#include const std::string Version = "1.0.1.170524";//版本号namespace itas109//使用命名空间,防止全局函数污染{ class YourClas原创 2017-05-24 09:14:59 · 589 阅读 · 0 评论 -
关于C++中delete释放内存时效性问题
如需转载请标明出处:http://blog.youkuaiyun.com/itas109 QQ技术交流群:129518033 测试示例: #include <iostream>using namespace std;int main(){int *map; int i=10; while(i--) { map=new int...原创 2017-04-01 14:27:17 · 10075 阅读 · 0 评论 -
C++ delete错误
1. 指针通过 new 或 new[] ,向系统“申请”得到一段内存空间,这段内存空间必须在不需要将它释放了。int* p = new int[100]; int girl[100]; p = girl; delete [] p; 灾难在 delete [] p 时发生。我们原意是要释放p最初通过new int[100]而得到的内存空间,但事实上,p那时已经指向girl[100]了转载 2017-03-12 17:04:27 · 1425 阅读 · 0 评论 -
【C++】string转为TCHAR
如需转载请标明出处:http://blog.youkuaiyun.com/itas109 QQ技术交流群:129518033 std::string m_csFileName = std::string("hello");TCHAR wc[MAX_PATH];_stprintf_s(wc,_T("%S"),m_csFileName.c_str());如需转载请标明出处:http原创 2016-08-12 17:13:34 · 15686 阅读 · 0 评论