C/C++
文章平均质量分 85
羽飞
这个作者很懒,什么都没留下…
展开
-
TIPS 二进制程序暴露符号给动态链接库使用
在支持插件/扩展的C/C++系统中,通常会支持在程序运行时加载动态链接库。这时二进制程序会提供一些函数/接口让动态链接库调用,但是这些函数在二进制程序中又不会使用,导致在编译时编译器直接把这些符号删除了,加载链接库就会由于找不到符号而失败。本文将描述一种将仅在动态链接库中使用的符号如何暴露出来的方法。原创 2024-09-29 09:49:56 · 821 阅读 · 0 评论 -
验证snprintf是否以null结尾
昨天一个同事问我snprintf末尾是不是一定为'\0',我印象中以前看过strncpy不保证以'\0'结尾。今天早起感觉不妥,干脆试验一把。下面是结果。测试代码#include int main(void){ char szBuf[10] = {0}; snprintf(szBuf, sizeof(szBuf), "1234567890"); print原创 2012-07-20 09:30:49 · 1890 阅读 · 0 评论 -
TinyXml从内存中解析,并保存到内存
网上介绍TinyXml的例子很多,所以不用再介绍了。最近也需要解析XML,从网上找了一下,发现TinyXml是最合适的。TinyXml同时支持Windows和Linux平台,而且它很小巧,功能也全面,包括对XML各种特性的操作。不过美中不足,虽然网上的应用实例很多,但是大部分都是从文件中解析和把数据保存到文件中的。而我需要的是解析内存中的数据,并且需要把数据保存到内存中。 TinyXm原创 2012-08-18 21:53:13 · 5183 阅读 · 1 评论 -
堆-链表实现
小顶堆大顶堆的概念大家应该都很熟悉了,如果不了解,可以搜索一下,网上很多介绍,而且很多源码实现,都很简单。不过从网上看了一些堆的实现,都是用数组的。但是数组有一个缺陷,需要扩展时,就要复制原来的内存,申请新的空间。所以我在想能不能用链表,发现还真可以,就凑凑写了个代码。最后代码是写完了,发现其实链表没有必要,而且会占用更多的内存,尤其是对于那种int型变量,过多的指针真是浪费了大量内存。如果真原创 2015-03-15 20:37:24 · 2982 阅读 · 1 评论 -
TIP linux下hook memset函数
linux下hook memset函数memset在libc.so中。hook可以帮助我们查找一些问题,比如hook memset可以根据某些memset参数特征记录一些信息,可以记录下调用栈信息。hook的代码:#define _GNU_SOURCE#include <stdlib.h>#include <stdio.h>#include <dlfcn....原创 2019-07-31 11:45:42 · 424 阅读 · 0 评论