c&c++技术
文章平均质量分 63
快乐的阿常艾念宝
我喜欢我的生活,在历史的倒影中钓取山水的亮色
展开
-
新认识如何选择哈希表的模数
经过一番探索,获得对于哈希表模数选择的新认识,避免对于素数、质数选择的误区原创 2024-07-18 19:43:26 · 326 阅读 · 0 评论 -
谈点近段对C语言结构体成员字节对齐问题的认识
总结一下对于结构体字节对齐的认识,以及计算某个2的幂次长度字节对齐的一种快速方法原创 2024-07-13 16:13:25 · 290 阅读 · 0 评论 -
C语言如果变量全部在全局内存空间会怎么样
笔者分析了C语言如果全部变量都放入全局空间会有什么特点的场景,进行分析和梳理,脱离了要将大部分全局内存都往栈空间、堆空间移动的冲动原创 2024-05-24 23:05:36 · 910 阅读 · 0 评论 -
如何分析C语言程序的内存占用
通过几个工具的组合,分析C语言程序的程序的内存占用情况,特别是全局变量的内存占用,并提供良好的实践建议原创 2024-05-17 20:45:25 · 523 阅读 · 0 评论 -
用一只麻雀来观察Linux内存分配惰性策略
用一段小程序观察linux内存分配的惰性策略,以及谈谈对于内存管理器的潜在影响原创 2024-01-12 21:45:10 · 444 阅读 · 0 评论 -
由Hello World的世界看世界
尝试从HelloWorld程序对C语言进行以小见大原创 2023-12-23 11:35:15 · 413 阅读 · 0 评论 -
字符串最大长度宏定义不应该包括结束符零会更自然
以前总纠结于字符串最大长度宏定义,到底是否应该包括结束符零,现在理清了逻辑后,觉得原则上应该是不携带的结束符原创 2023-10-18 19:47:40 · 179 阅读 · 0 评论 -
cppcheck值得推荐的开发工具链工具
cppcheck建议作为开发工具链的一部分,适用于c/c++项目工程原创 2023-10-16 22:35:18 · 60 阅读 · 0 评论 -
make编译错误输出乱码的一种原因,与特殊符号的字符集相关
困扰了很久的编译日志输出乱码,算是找到了它的原因,就是两个系统间字符集假定的不同原创 2023-10-14 18:08:09 · 509 阅读 · 0 评论 -
私有继承和虚函数私有化能用么?
一般人在面对选择继承时都会有点谨慎,但是在ACE优良的框架设计下,你几乎可以达到这样的使用自由。在私有继承和虚函数私有化相对比较合理时,可以尽情选择使用。在两个类关系紧密时,选择私有继承在合适的场景,也是一个合理的选择原创 2023-09-29 12:07:50 · 151 阅读 · 0 评论 -
ACE默认高效实现之自适应锁策略兼谈模板与宏
根据ACE自适应有锁、无锁场景的模板实现,谈ACE的默认高效实现;兼谈模板的优势,以及宏的优势,两者在C++中都是不可获取的原创 2023-09-16 14:59:32 · 140 阅读 · 0 评论 -
g++模板显式实例化big file例子
通过对于std::vector简单模板类的显示实例化实践,总结了在编译框架整体上禁止隐式模板实例化情况下,对于big file特殊地采取隐式模板实例化的策略,以实现自动化原创 2023-09-09 15:14:16 · 140 阅读 · 0 评论 -
再谈内存分配器的优缺点
根据使用积累使用内存管理器的优点和缺点,还是非常建议使用的。兼谈ACE框架内存管理器Allocator的使用经验原创 2023-09-09 11:32:59 · 178 阅读 · 0 评论 -
ACE默认高效实现之编译GCC pipe选项
发现ACE在编译阶段,也是非常高效的,用-pipe编译选项,减少磁盘IO,提高编译效率原创 2023-08-30 19:23:41 · 146 阅读 · 0 评论 -
用睡眠策略实现队列的无锁访问
用睡眠策略实现生产者和消费者模型的无锁访问,可以提高生产者和消费者的并行度原创 2023-08-26 11:39:33 · 119 阅读 · 0 评论 -
ACE内存池管理器积累
对于内存池管理,建议直接使用ACE提供的内存管理器,而不必自己写一个,ACE默认实现高效,还是很值得信赖的!增加以分配器形成分配器梯队的思路具有连续内存分配模式的定大小、定长度的分配器,具有连续访问优势原创 2023-08-19 20:53:14 · 150 阅读 · 0 评论 -
C语言惯用法之typedef结构体类型
为什么C语言中充满了typedef 结构体类型的语句,找到一种合理说服自己的解释,简写的惯用法使然原创 2023-08-19 19:38:33 · 171 阅读 · 0 评论 -
Linux多线程编程中的调度策略编程
调度策略编程应该在多线程编程中拥有一席之地原创 2023-07-25 19:59:39 · 223 阅读 · 0 评论 -
尝试说透C语言指针
尝试通过void*指针的例子说透指针,而且通过void二级指针的转化解释指针的精华原创 2023-04-05 22:03:22 · 313 阅读 · 0 评论 -
GDB使用经验总结
对于常用的GDB使用技巧进行总结原创 2023-04-03 19:20:32 · 338 阅读 · 0 评论 -
ACE C++网络通信框架深入解析ACE_Message_Block消息类
对于网络报文处理头尾预留空间的惯用法,ACE_Message_Block类提供了很好支撑,进而感受到ACE C++网络通信框架良好的设计弹性原创 2023-03-10 21:54:58 · 746 阅读 · 0 评论 -
Linux中C语言崩溃所输出的异常堆栈是准确的么
以前总怀疑程序崩溃的异常堆栈可能不太准确,是否因为及时性的原因,程序还会跑飞一段时间,是否存在随机的可能,如果内存被破坏不是很厉害的情况,异常堆栈的输出将是非常准确的;其它场景,还需要进一步深入分析!原创 2023-03-03 21:36:34 · 761 阅读 · 0 评论 -
addr2line输出问号怎么办
addr2line在使用地址信息不正确的情况下,会输出文号,但实际上在经过一番特殊处理后,还是可以定位到异常代码的行号原创 2023-02-27 22:13:48 · 3465 阅读 · 0 评论 -
Linux中C语言编程经验总结
总结几年下来在Linux中C语言编程经验,这些指导意见,我想在以后的实践中也会经常用到,所以,总结出来,以利于共享和演进。随后会不断增补中...原创 2023-02-15 20:04:55 · 1452 阅读 · 0 评论 -
高质量C语言map实现
扩展了github上比较经典的map实现,使得它可以支持原始的C语言类型作为键值原创 2023-02-11 21:20:08 · 846 阅读 · 0 评论 -
GDB调试小技巧之断点命中自动command命令
gdb调试断点命中时,可以加入自动执行的命令,以避免重复手工劳作,以及形成连续打印原创 2022-12-03 14:52:20 · 675 阅读 · 0 评论 -
看着貌似吓人的底层问题,其实错在原本的自身
看着貌似gcc的O3优化问题,其实源自程序自身结构体定义和使用问题,导致的栈内存被非法写入,进而造成崩溃问题原创 2022-11-09 20:39:22 · 526 阅读 · 0 评论 -
防火墙导致Linux发送网络报文出现errno等于1的错误码
errno == 1 的错误码很少见,仔细分析下来是因为防火墙的原因。其它安全模块所导致的问题,也有可能暴露此错误原创 2022-07-04 22:58:08 · 1152 阅读 · 0 评论 -
在C语言中借鉴C++的RAII技术思想
总结网上查阅到的在C语言中使用RAII进行资源管理的方法,但是,感觉用装饰模式更简单原创 2022-01-15 11:04:53 · 232 阅读 · 0 评论 -
Linux链接SO库和运行加载SO库的经验
我们在编译自己的```SO```库时,存在两类使用```SO```库的情况,**显式加载**和**隐含加载**如果**显式加载**,则在合适的时机,在自家```SO```库的API执行过程中,需要主动加载依赖```SO```库,并查找函数名称,获取函数指针,然后进行调用。**隐含加载**,在编译自家库的时间,只需要对方的头文件接口```API```,不需要指定```-lsoname```的依赖```SO```库的编译选项;但在自家库被链接成为可执行程序时,则需要指定```-lsoname```,让编原创 2021-11-13 16:37:18 · 1468 阅读 · 0 评论 -
#include<*.h>与const不可变性的关联
对于#include <.h>与#include ".h"的惯用法#include <*.h>用来包含系统头文件#include "*.h"用来包含自研模块内头文件更精深的区别,则可以在C语言标准中找寻,但也仅是一个框架限制简而言之,#include <.h> 和 #include ".h" 都会在实现定义的位置查找文件,并将其包含。区别是,若 #include ".h" 可以查找成功,则遮蔽 #include <.h> 所能找到原创 2021-10-24 19:29:16 · 113 阅读 · 0 评论 -
{0}花括号清零 VS memset清零
这里写自定义目录标题结论为什么呢?补充{0}花括号清零 VS memset(dst, 0 , sizeof(dst_type))清零============================================================结论在对C语言一个结构体或一块连续内存清零时,如果是在编译时,就可以确定下来类型和大小的内存区域,特别是小块内存,无疑用**{0}花括号清零**,将目标内存清零是最可取的!为什么呢?美学角度char dst[256] = {0};VS原创 2021-10-23 17:39:44 · 397 阅读 · 0 评论 -
我的C/C++编程规范
# 编译器+ 能够用最新的编译器版本,就使用最新的编译器版本--> 最新的编译器可以获得更优的代码生成质量和缺陷代码检查提醒# 语言使用## API接口设计+ 注重使用const修饰关键字和C++中的引用语言特性,做API接口参数传递设计++ void f(const XParaPointer*)--> const体现接口参数在调用过程中不会被修改的约束--> 如果在API接口参数设计中,统一使用const进行限定,那么没有携带const关键词的指针参数,则可以被认...原创 2021-09-04 17:19:46 · 83 阅读 · 0 评论 -
谈OSIP2在QT下的编译Compiling
有非常浅薄的应用场景,去简单地使用SIP消息,而OSIP2 SIP协议栈,其开源证书相对友好,又同时支持了解析、构造消息,但无事务层、对话层状态机涉入的可能。简单地使用osip2消息子层sublayer模式如此: / / allocation/release of memory. xxxx_init(osip_xxx_t *...原创 2020-04-04 17:09:30 · 280 阅读 · 0 评论 -
编程中经常涌现的模式--双协议栈模式
设计模式是很不错的,可以用来组织代码的结构,以应对变化。在我的理解中,设计模式是做到了更好的,把固定的东西用代码写出来,而用变量来做用于变化的地方。 在通讯领域经常会遇到各种协议的通讯编程,其实在程序结构上类似的双协议栈结构。通讯入口虽然作为程序的入口,但是,在组织代码中,却不能由它来提纲挈领,这样让你的代码比较难以理解,推荐的模式是双协议栈模式,在核心代码区域只处理纯数据,这样也可以使得程原创 2012-06-11 21:32:55 · 3997 阅读 · 0 评论 -
由扫描定时器说开去
扫描定时器的特性原创 2010-09-27 22:47:00 · 610 阅读 · 0 评论 -
VC注册控件报0x80070716
在我所在的项目中,经常是多人共同维护一个模块,由于团队内的沟通,并不算特别通常,往往这个添加的代码,另外一个很少知道为什么或者也不太关心这个问题。这个公司的特点,几乎都是跑步进行开发的,停歇的时间和机会很少! 今天 下午的时间,为了解决一个故障,就从版本机上反合了控件代码到本地编译,发现编译能够成功,但是,利用VC IDE环境提供的注册控件工具,总是注册失败,而且会得到0x80070716原创 2009-11-06 19:03:00 · 2875 阅读 · 0 评论 -
注册控件报找不到指定模块的一个解决办法
前一段工作中,由于不小心做了某一些操作后,工作开发维护的IE控件,在编译debug版本后,不像以前一样,在编译结束后,可以自动完成注册,而是弹出alert对话框,报LoadLibrary找不到指定的模块! 由于以前做同样编码工作时,是很正常地在debug版本编译后完成注册。当时,就觉得这里面一定有问题,而且问题还是可以解决的。但是,那段时间正好比较忙,没有潜心去解决这个问原创 2009-06-30 22:00:00 · 11510 阅读 · 1 评论 -
float不能做精确比较的原因粗解
在学习c语言的过程中,总是有些老师告诉你浮点型不能做精确相等性的比较,让你作为c语言编程格言告诉你去遵守;但是,却没有告诉为什么float不能做精确相等性比较的原因!这种教书育人的模式,是一种死记硬背的灌输,其实告诉你float在计算机内部的表示,你自然不会认为float是多么精确的数值,也不会认为他们之间可以做很精确的比较了! sizeof(float) = 4 也就是2^32次方原创 2009-04-06 12:20:00 · 3010 阅读 · 0 评论 -
影响很深的32位机的概念-c语言返还结构体
前一段公司考试了c语言考试,由于自己今年年初刚去维护VC开发的模块,由于自己以前,也对c语言的学习,从来没有间断过,也就很乐意地去参加了这次考试。 经过考试,勉强考试过关,里面出的考题里面,也激起了自己对一些c语言根本性问题的追究,也就很是“第一次”地利用vc里面自带的"go to disassembly"工具,查看c语言代码之后的汇编代码是什么样子,也逐个验证了c语言考试中的一些原创 2009-04-06 11:45:00 · 773 阅读 · 0 评论