
C++
文章平均质量分 68
张某人的胡思乱想
这个作者很懒,什么都没留下…
展开
-
gmtime不支持多线程并发
这两个日期有一个客户和对端的日期对上,另外一个对不上,我怀疑对端有两个日期,对端程序员说就一份数据,很奇怪。既然双方都认为没有问题,只能靠日志报文检查了,因为偶发,还很难抓住,原来也出过类似问题,都不了了之了,这次想证明是对方问题,就下功夫抓报文,终于抓到了,结果大跌眼镜,同样的整数值,时间转换函数偶发转换成另外的值了,竟然是我们这边的问题。ACE其实是个老古董了,封装的是操作系统libc的库,问了一下豆包,说可能线程不安全,但也不确定,建议看ACE源码,看来ACE相关的信息太少,大模型都给不出确切答案。原创 2024-11-15 16:45:39 · 321 阅读 · 0 评论 -
C++20-协程
当然还有个比较令人烦闷的事情,VS2022里面,std::suspend_never,std::coroutine_handle,co_await编辑器都标识为错误,这是为啥,VS2022不是号称支持C++20吗?昨天看到一本书,《现代C++语言核心特性解析》,第33章是协程,我机器上安装了vs2022,肯定是支持的,直接运行第一个例子就报错了。显示少了#include <coroutine>,加上后不行,又把项目的C++语言设置为C++20,缺省是C++14。搜了一大圈不明就里,现在搜索质量真是差。原创 2024-09-25 12:35:33 · 373 阅读 · 0 评论 -
Linux多线程服务器编程-1-线程安全的对象生命期管理
C++标准库里的大多数class都不是线程安全的,包括std::string、std::vector、std::map等,因为这些class通常需要在外部加锁才能供多个线程同时访问。如何避免对象析构时可能存在的race condition(竞态条件)是C++多线程编程面临的基本问题。· 无论操作系统如何调度这些线程,无论这些线程的执行顺序如何交织(interleaving)。· 在即将析构一个对象时,从何而知此刻是否有别的线程正在执行该对象的成员函数?· 多个线程同时访问时,其表现出正确的行为。原创 2024-08-02 18:14:10 · 206 阅读 · 0 评论 -
P15 14-Desktop and Windows
https://www.bilibili.com/video/BV1tt411s7vQ?t=2400&p=152021.6.23今天解决了不能显示图形问题,原来是VGA里面少了++,造成初始化错误。can not display line for(uint8_t i = 0; i < 25; i++) { crtcIndexPort.Write(i); crtcDataPort.Write(*(registers++)); // for...原创 2021-06-24 00:27:46 · 118 阅读 · 0 评论 -
栈缓冲区溢出攻击的例子
栈缓冲区溢出攻击的例子缓冲区是程序用来存储数据的连续内存区域,一旦分配完成,其起始地址(边界)和大小就固定下来。当使用缓冲区时,如果使用了超出边界的区域,就称为缓冲区溢出(Buffer overflow)如果缓冲区分配在栈上,就称为栈缓冲区溢出。如果分配在堆上,称为堆缓冲区溢出。图1左侧的0xCC是局部变量区域。具备变量下面是父函数EBP和当前函数的返回地址。具备变量越界,将覆盖父函数EBP和当前函数返回地址。使当前函数返回到意外的地方。如果这个意外的地方是0,反汇编就是add指令。如原创 2021-04-18 01:28:13 · 770 阅读 · 1 评论 -
改了一版,VC6下可以跑了
#if !defined(UNICODE) #define UNICODE #endif #if !defined(_UNICODE) #define _UNICODE #endif #include <tchar.h>#include <windows.h>#ifdef _DEBUGchar SZ_INPUT[]="\x6a\x01\x33\xc0" "\x50\x50\x50\xff" "\x15...原创 2021-04-13 07:36:47 · 156 阅读 · 1 评论 -
为啥跑不起来?
// BoAttack.cpp : Defines the entry point for the application.////win7 64//004010a8 FF 15 AC A2 42 00 call dword ptr [__imp__MessageBoxA@16 (0042a2ac)]//word ptr [__imp__MessageBoxA(0042a2ac)] -- no @16#include "stdafx.h"//42#ifdef _DEB...原创 2021-04-09 08:08:50 · 164 阅读 · 3 评论 -
使用windbg观察栈
清明时节没出门,在B站上发现一个windbg教程,学习了堆栈一段https://www.bilibili.com/video/BV1j5411P7Tp?t=1501.B站内容Introduction to Windbg Series 1 Part 8 - Commands k for callstack or stackbackBasic commands for windbg - kConcept of Callstack-Callstack is the most important i原创 2021-04-05 08:39:58 · 713 阅读 · 0 评论 -
windows内存泄露定位方法
windows内存泄露定位方法内存泄露(Memory Leak)是C/C++程序经常遇到的一个棘手问题。简单来说,内存泄露就是没有释放本来应该释放的内存。可以把解决内存泄露问题分成两步,第一步是定位到泄露的堆块,第二步是定位到泄露堆块是哪段代码分配的。本文介绍如何使用CRT堆的调试支持来实现这两个目标。1._CrtDumpMemoryLeaksCRT设计了一个名为_CrtDumpMemoryLeaks的函数来检测和报告发生在堆上的内存泄露。调用后产生类似如下的信息:线程 0x1c98 已退出,原创 2021-04-04 01:33:18 · 1936 阅读 · 1 评论 -
dosbox上安装borlandc
周末发现一个怀旧网站:https://fabiensanglard.net/Compile_Like_Its_1992/index.php下载:dosbox, 从sourceforge.net上下载下载Borland C++3.1经典http://fabiensanglard.net/Compile_Like_Its_1992/tools/BCPP31.zip下载 狼穴源码http://fabiensanglard.net/Compile_Like_Its_1992/tool原创 2020-07-20 08:15:30 · 498 阅读 · 0 评论 -
Michael Abrash‘s black book--第一章--1.3
1.3 Rules for Building High-Performance Code编写高性能代码的规则We've got the following rules for creating high-performance software:-- Know where you're going (understand the objective of the software)....原创 2019-10-26 23:37:51 · 322 阅读 · 0 评论 -
Michael Abrash‘s black book之前言
forword--前言I got my start programming on Apple II computers at school, and almost all of my early work was on the Apple platform. After graduating, it quickly became obvious that I was going to have...原创 2019-04-14 19:21:44 · 316 阅读 · 0 评论 -
中学信息奥赛第五课--顺序结构程序设计
顺序程序结构就是CPU从头到尾逐行执行,没有分叉(分支),也没有跳转(循环尾部跳到头部),是最简单的执行方式。例题:三位数反转输入一个三位数,分离出它的百位、十位和个位,反转后输出。样例输入:127样例输出:721分析:首先读入变量n,然后进行分离。百位n/100(注意取的商的整数部分),十位等于n/10%10(这里的%是取余数操作),个位等于n%10.程序如下:#...原创 2018-08-08 23:04:25 · 624 阅读 · 0 评论 -
整数倒叙打印的问题
输入一个整数,要求倒叙打印输出。例如输入123,要求输出321. 还有个要求是使用递归。思路:递归首先考虑终结条件,应该是在整数n/10等于零,表示打印了最高位,就终结了。其他情况应该继续调用函数。程序如下:#include <cstdio>void printa(int n) { if(n<0) { printf("-"); ...原创 2018-08-17 22:56:13 · 272 阅读 · 0 评论 -
c++ primer 2
上传了一下C++primer,大家要同步学习,可以从下面的地址下载:http://download.youkuaiyun.com/detail/hb_zxl/4516478记住给我一些积分啊,呵呵,不是为了赚积分,只是为了以后下载优快云 的资源方便。不过这个下载可能有点不好,声明只用于个人学习,别做他用。今天学习第一章Getting Started;就是一个简介。稍后总结。原创 2012-08-21 22:25:49 · 464 阅读 · 0 评论 -
zt:如何学习C++
推荐一个学习C++的方法,适合有一定基础的同学。先读effective c++,一天能搞定(从c转读第二版,从java等转读第三版),然后读google c++ style。再是看leveldb代码(http://t.cn/aYyqjo 多谢@apc2 推荐),Sanjay和Jeff所写,简短完备,非常优美,完美阐述前两者所列的原则。大家都问怎么一天读完effective c++。我的转载 2013-06-17 23:10:08 · 557 阅读 · 0 评论 -
zt:正确释放Vector的内存
今天在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问( Link)。博主采用 Vector存储一些数据,但是发现在执行 clear() 之后内存并没有释放,于是怀疑产生了内存泄露。随后有人回复:“vector 的 clear 不影响 capacity , 你应该 swap 一个空的 vector。”开始并不知道回复者在说什么,于是在谷歌上搜索 vector s转载 2013-06-18 22:22:18 · 549 阅读 · 0 评论 -
ACE学习
ACE目前到什么版本了?是否还在发展?好久没有了解了。根据C++网络编程卷1的地址,找http://ace.ece.uci.edu,这个网站竟然不可用了,通过google搜索ACE C++可以得到下面的地址http://www.cs.wustl.edu/~schmidt/ACE.html最新版本是6.2.0This is ACE version 6.2.6, released Tu原创 2014-05-19 23:16:03 · 806 阅读 · 0 评论 -
今天无意上了一下github,推荐几个好开源项目
rocksdb,基于C++11编写:http://rocksdb.org/原创 2014-06-18 22:23:50 · 803 阅读 · 0 评论 -
好久没有来了,2017新的开始
无原创 2017-01-22 21:25:54 · 320 阅读 · 0 评论 -
信息学第二课--逐行解说hello world
上一个课为了验证dev c++安装效果,敲入了一个C++程序hello.cpp,并编译运行,今天详细介绍一下每行代码:#include <iostream>这是一个#include指令,表示本程序将使用iostream文件中的功能,iostream顾名思义是io(输入输出)stream(流),即标准输入输出。我们这个程序使用的是标准输出流cout和它的输出操作符<<...原创 2018-07-28 21:55:59 · 511 阅读 · 0 评论 -
中学信息学第三课--算术表达式
计算机的本职工作就是计算,信息学竞赛也大部分是算术相关的题目,本文主要讲解一下如果用计算机做计算。从最简单的开始:#include <cstdio>int main() { printf("%d\n", 1+2); printf("%d\n", 3-4); printf("%d\n", 5*6); printf("%d\n", 8/4); ...原创 2018-07-29 18:04:50 · 345 阅读 · 0 评论 -
中学信息学---C++数据类型
初学者要了解C++内置的几个基本类型:bool 布尔类型 两个值true,falsechar 字符类型 short 短整形int 整形long 长整形long long 64位长整形float 单精度浮点数double 双精度浮点数long double 扩展精度浮点数 ...原创 2018-07-29 23:26:40 · 456 阅读 · 0 评论 -
信息学第一个课
高中学信息奥赛,目前都开始使用C++了,其实C++作为第一门编程语言,学起来有些门槛,不过也不是高不可攀。首先从老师那里得知使用dev C++作为开发工具,作为程序员,在windows下用惯了vc,在linux下用惯了gcc,这个dev C++是何方神圣?百度搜索了一下,发现原来是mingw(GCC的windows 版本)加一个图形化的编辑器组成的一个开源集成环境。其实编译代码还是用的GCC,...原创 2018-07-27 22:43:11 · 615 阅读 · 2 评论 -
中学信息奥赛第六课--分支程序结构
无论程序还是生活,我们都面临着各种选择,程序即人生。选择在C++中是用if语句或者switch语句实现的。例子:鸡兔同笼--已知鸡和兔总数为n,总腿数为m. 输入n和m,依次输出鸡的数目和兔的数目。如果无解,输出No answer样例输入:14 32样例输出:12 2分析:设有a只鸡,b只兔。 a+b=n 2a+4b=m. 解方程:a=(4n-m)/2 b=n-a. a,b必...原创 2018-08-14 21:43:32 · 181 阅读 · 0 评论 -
中学信息竞赛第四课--变量及其输入
如果没有存储在内存中的数据,我们基本上不能用计算机做任何有趣的事情,我们用来存储数据的“位置”称为对象。我们需要使用一个名字来访问一个对象。这个命名后的对象称为变量,它有特定的类型(如int或string),类型决定我们将什么赋值给对象,如123可以赋给int型, “hello world!\n” 可以赋给string型。类型也决定了可以使用的操作,如对int型可以进行乘法运算,对多个string...原创 2018-08-07 22:40:14 · 340 阅读 · 0 评论 -
C++ primer---1
最近股市糟糕,买了本C++ primer第四版,准备重温一遍,这次下决心买了英文版,顺便温习英语。使生活增加点乐趣。以后每天记录一下。需要准备一套环境,下决心彻底放弃vc,于是下载了mingw,作为C++编译器,编辑器就用中国人写的notepad++。mingw从 http://www.mingw.org/下载了最新的mingw-get-inst-20120426.exe,下载下来才知道,原创 2012-08-20 22:39:43 · 732 阅读 · 0 评论