
C/C++
文章平均质量分 89
橙橙橙橙辰
这个作者很懒,什么都没留下…
展开
-
一个“size_type”引发的Bug
因为std::vector::size()方法返回一个了一个无符号整型类型“size_type”的结果,所以整个运算过程都被编译器隐式转换为无符号数的运算,从而导致减法运算结果溢出和大小比较运算结果异常。原创 2023-02-15 15:48:02 · 243 阅读 · 0 评论 -
C++ Lambda表达式
在C++11和更高版本中,Lambda表达式(通常称为Lambda)是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象(闭包)的简便方法。Lambda通常用于封装传递给算法或异步函数的少量代码行。Lambda表达式是C++11中一个较为重要的特性,其来源于函数式编程的概念,也是现代编程语言的一个特点。下文将记录和简述Lambda表达式中的基本概念和用法。原创 2023-01-30 17:29:55 · 4930 阅读 · 1 评论 -
scanf()踩内存定位记录
一、前情提要前段时间,有个临时需求,需要我提供demo给第三方用户进行测试,但是我不知道第三方用户提供的密钥明文,并且需要我去除掉我们的内部库。我觉得最简单的方法就是使用开源的openssl库,和使用scanf()让第三方用户手动输入密钥明文。我觉得scanf()对于一个刚学C语言的新手来讲应该也挺简单的,但是我却出现了第二次手动输入指定长度的字符串后,第一个字符串的第一个字符会被修篡改。本来应该立马能定位到的,但是我却折腾了挺久,所以还是决定记录一下。二、情景复现1、源码组成我们构造一个类似的源码原创 2021-01-06 00:36:20 · 316 阅读 · 0 评论 -
记一次gcc链接提示符号未定义错误
一、前情提要上周在使用第三方库的时候,出现链接提示符号未定义的情况。但是使用readelf查看了第三方so内部符号的属性时,可以看到实际是有定义的,但是so内部的符号与我报错的符号存在一定的差异。这就涉及到了extern "C"的作用和g++跟gcc之间对符号处理上的一些差异,拖了很久,今天完成一下这个问题的输出吧。二、符号差异1、现象我们这里简单模拟复现一下当时的情景。简单准备了一个so的源码**“func.cpp”**,包括其头文件"func.h"定义:// func.h#include &原创 2020-11-21 22:05:48 · 2996 阅读 · 0 评论 -
Linux下通过backtrace获取程序崩溃前堆栈信息
原文链接:http://www.ccccxy.top/coding/archives/2020/10/23/linux_backtrace_87/欢迎各位大神指导斧正!一、backtrace( )函数介绍/* Store up to SIZE return address of the current program state in ARRAY and return the exact number of values stored. */extern int backtrace (voi原创 2020-10-27 14:24:56 · 3109 阅读 · 0 评论 -
dlopen动态装载共享库
原文链接: http://www.ccccxy.top/coding/archives/2020/10/01/dlopen_load_shared_library_11/欢迎大神们评论指导和斧正一、基本说明显式运行时链接 (Explicit Run-time Linking),有时候也叫做运行时加载,程序自己在运行时控制加载指定的模块,即动态库,并且可以在不需要该模块时将其卸载。和普通的动态链接相比,显式运行时链接,可以使程序在需要使用到某个插件或驱动时,才将相应的模块加载进来,而不需要在一开始就将原创 2020-10-27 14:21:16 · 2274 阅读 · 0 评论