C/C++
文章平均质量分 92
枫竹梦
枫竹梦,像风一样追逐自己的梦想!
展开
-
STL容器元素应满足的条件
要使用C++中的标准模板库中的容器,其元素要满足以下三个条件:元素必须可以通过copy构造函数进行复制,且二者进行相等测试返回true。元素必须可以通过赋值操作符完成赋值操作。元素必须可以通过析构函数完成销毁操作。当然下面几种操作在需要时也必须满足:序列容器构建非空容器时,默认构造函数是可用的。搜索操作时,需要定义operator==运算符。关联容器,元素必须定义出排序准则,默认使用o原创 2016-04-29 22:56:51 · 1229 阅读 · 0 评论 -
跨平台获取可执行文件的目录
在写跨平台的项目时,获取可执行文件的目录是各平台特定的接口,也就是说各平台有不同的方式。Mac OS X: _NSGetExecutablePath() (man 3 dyld)Linux: readlink /proc/self/exeSolaris: getexecname()FreeBSD: sysctl CTL_KERN KERN_PROC KERN_PROC_PATHNA原创 2017-05-20 13:40:11 · 1507 阅读 · 0 评论 -
CMake最好的学习资料
本文为转载,阅读不友好,请先查看原文:https://blog.gmem.cc/cmake-study-note收下为原文内容================>基础知识CMake简介CMake是一个开源的可扩展工具,用于独立于编译器的管理构建过程。CMake必须和本地构建系统联合使用,在每个源码目录中,需要编写CMakeLists.txt文件,以声明如何生成标准的构建文件(例如转载 2017-04-15 17:07:14 · 4983 阅读 · 0 评论 -
使用valgrind进行内存泄漏和非法内存操作检测
valgrind是一个强大的工具,最常用的功能是用它来检测内存泄漏和非法内存的使用。要想让valgrind报告的更加细致,请使用-g进行编译。基本命令如下:$ valgrind --tool=memcheck --leak-check=yes program可以检测如下问题:1. 如果malloc/realloc/calloc和free的数量不同,则会报告如下的内容原创 2017-04-09 21:40:51 · 2621 阅读 · 0 评论 -
__STDC_CONSTANT_MACROS和__STDC_CONSTANT_MACROS的作用
虽然是写C++出身,但还真不知道这两个宏是什么作用。查了一下,参见https://sourceware.org/bugzilla/show_bug.cgi?id=15366__STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are a workaround to allow C++ programs to use stdint.h macro原创 2016-12-30 17:02:42 · 4459 阅读 · 0 评论 -
GDB打印内存命令
用gdb查看内存格式x /nfu参数说明x是 examine 的缩写n表示要显示的内存单元的个数f表示显示方式, 可取如下值 x 按十六进制格式显示变量d 按十进制格式显示变量u 按十进制格式显示无符号整型o 按八进制格式显示变量t 按二进制格式显示变量a 按十六进制格式显示变量i 指令地址格式c 按字符格式显示变量f 按浮点数格式显示变量u表示一个地址单元的长度 b表示原创 2015-10-08 11:08:31 · 3173 阅读 · 0 评论 -
魔方阵算法及C语言实现
1 魔方阵概念魔方阵是指由1,2,3……n2填充的,每一行、每一列、对角线之和均相等的方阵,阶数n = 3,4,5…。魔方阵也称为幻方阵。例如三阶魔方阵为:魔方阵有什么的规律呢?魔方阵分为奇幻方和偶幻方。而偶幻方又分为是4的倍数(如4,8,12……)和不是4的倍数(如6,10,14……)两种。下面分别进行介绍。2 奇魔方的算法2.1 奇魔方的规律与算法奇魔方原创 2013-08-04 18:53:36 · 3603 阅读 · 2 评论 -
常用函数
directoryopendirreaddirclosedirfilereadwritecloseinput characters and stringsgetcfgetcgetchargetsfgetsungetcOutput of characters and stringsputcfputcputcharputsfputsprocessgetpid原创 2016-05-14 17:47:23 · 479 阅读 · 0 评论 -
Linux线程的几种结束方式
Linux创建线程使用int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)Linux线程的几种结束方式:调用pthread_exit(exit_code),exit_code为线程退出的状态代码。同原创 2015-11-17 11:41:22 · 2855 阅读 · 0 评论 -
GDB调试core文件(3)
列出一些常见问题:一,如何使用core文件使用core文件在core文件所在目录下键入:gdb -c core它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等。如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:gdb -c core MyServer以下怎么办就该去学习gdb原创 2015-12-31 18:01:42 · 946 阅读 · 0 评论 -
GDB调试core文件(2)
使用gdb和core dump迅速定位段错误 关键字:gdb、段错误、core dump一、什么是core dumpcore:内存、核心的意思;dump:抛出,扔出;core dump:前提:当某程序崩溃的一瞬间,内核会抛出当时该程序进程的内存详细情况,存储在一个名叫core.xxx(xxx为一个数字,比如core.699)的文件中。二、更改生成的core文件的大小限制可见,core文件是内原创 2015-12-31 17:55:37 · 958 阅读 · 0 评论 -
GDB调试core文件
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump) 在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类型的错原创 2015-12-31 17:51:47 · 1312 阅读 · 0 评论 -
C++函数模板的显示调用与隐式调用
C++函数模板可以显示调用与可以隐式调用首先定义函数模板:template <class T>inline const T& c_max (const T& a, const T& b){ return a < b ? b : a;}那么隐式调用也就是隐式的参数类型推导,根据参数类型决定函数模板的编译,如: // implicitly c_max(1, 2);使用最多的,原创 2016-04-22 14:28:39 · 9166 阅读 · 0 评论 -
vector缩减容量
在C++标准库容器vector的容量是不会自动的缩减的,也就是说删除元素操作,其引用、指针、迭代器也会继续有效。那么当在一个较大的vector中删除了大量的元素之后,其实际的size比较小,而其capacity比较大,如果对空间比较敏感,希望vector的容量能够缩小一些,这时可以使用下面的技巧来实现。std::vector<T> tmp(v);tmp.swap(v);或者std::vector<原创 2016-04-30 23:48:51 · 5287 阅读 · 1 评论 -
各平台预定义的宏
写跨平台的项目常常需要在代码中判断平台的类型,加载不同的资源以及使用不同的接口。在不同的平台中定义了不同的宏。常用的如下1. Windows_WIN32 32位和64位系统都有定义_WIN64 仅64位系统有定义2. Unixunix__unix__unix__3. Mac OS X__APPLE____MACH__4原创 2017-05-20 13:53:27 · 2126 阅读 · 0 评论