![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 50
天马行空_
先生不知何许人也。微信:without_sec,欢迎交流,互相学习。
展开
-
__RTC_CheckEsp实现原理
01371563 mov esi,esp01371565 push offset string "pause" (1377804h)0137156A call dword ptr [__imp__system (137A3F4h)]01371570 add esp,401371573 cmp esi,esp01371575 call @ILT+420(__RTC_CheckEsp) (13711A...原创 2021-04-11 13:45:43 · 1250 阅读 · 0 评论 -
【C++】根据类的成员变量地址获取对象地址
/* 根据一个成员变量的地址获取类对象的地址 */template<class class_type, class data_type>void *GetBaseFromDataMember(data_type class_type::*mem, void* pmem){ union temp{ int class_type::*mem; int offset; }; union PtrToInt { void *p.原创 2021-04-08 21:49:01 · 1952 阅读 · 0 评论 -
QObject详细描述(来自assistant.exe)
详细描述QObject类是所有Qt对象的基类。QObject是Qt Object Model的核心。这个模型的核心特征是,为了无缝对象通信的,叫做signals和slots的一个强大的机制。你可以使用connect()连接一个信号和槽,使用disconnect()销毁该连接。为了避免永远不会结束的通知循环,你可以使用blockSignals()临时地组织信号。保护函数connectNotify()和disconnectNotify()让追踪连接成为可能。QObjects使用obje...翻译 2020-11-23 22:08:57 · 310 阅读 · 0 评论 -
【深入理解】C函数调用与汇编语言
函数在调用时,需要关注的有几个点,如何传递参数,如何返回到原来的地方继续执行。今天通过查看函数对应的汇编进行分析。函数和调用函数的代码如下:long long add(long long x, long long y) { long long sum = x + y; return sum;}…long long x = 3, y = 7;long long a = add(x, y);函数add有两个long long的参数x和y,在函数中,有一个局部变量sum,赋值原创 2020-10-14 13:16:18 · 527 阅读 · 0 评论 -
程序运行时,为什么栈的访问比堆的访问更快?
我不是在问,程序转换为汇编代码后,访问堆的汇编代码,多了一步,就是访问栈中的指针(局部的指针),再去访问堆。从汇编代码层面,直接访问栈和堆,为什么access stack faster than heap?是CPU缓存机制吗,还是其他?...原创 2020-09-27 21:31:41 · 371 阅读 · 0 评论 -
C++类单一继承时(带有虚函数)在内存模型上的探索
注:demo程序只是为了探索对象模型。在《深度探索C++模型》一书中,作者在描述编译器对vptr在class object的布局做了描述,一般放在data member的前面,也就是class object的最前面,也可以放在data member的后面。今天使用g++编译器和gdb调试器,来试验vptr在base class和derived class中的布局。单个类中包含虚函数时的虚指针布局假设有一个base class B,代码如下:class B {public:原创 2020-09-20 14:16:25 · 120 阅读 · 0 评论 -
C语言关键字static
staticC语言中的关键字static有3个用法,它表示静态变量或函数,被声明为静态的变量,存在在静态/全局变量区。它的作用主要是:通过static限定外部对象,可以达到隐藏外部对象的目的。1,函数中的静态局部变量。函数中的静态局部变量在函数调用过程中,它一直存在,无论函数是否被调用,它只可以被赋值一次,再次调用该函数时,里面的局部变量不会进行初始化。2,文件(模块)中的全局静态变量。文件(模块)中的全局静态变量只能被该文件中的其他函数使用,无法被其他文件(模块)中的函数使用。原创 2020-08-12 20:30:36 · 197 阅读 · 0 评论 -
C语言参数传递所使用的寄存器
探索下C语言的函数是如何传递参数的,寄存器?栈?,何时使用寄存器,使用哪些寄存器,什么时候使用栈来传递参数。这是容易疑惑的地方。用gcc编译C程序,看看C语言是如何传递参数的。同时用到了edb调试器。使用的操作系统是linux 64位。思路是编写一个简单的函数,具有个数不同的参数。函数没有具体的意义,纯粹是为了探索C语言的函数是如何传递参数的。函数有1个参数// a.c// gc...原创 2020-02-09 13:12:53 · 8077 阅读 · 0 评论 -
MD5--使用C++语言实现
MD5是一种消息摘要算法。#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <string>using namespace std;typedef unsigned char uint8;t...原创 2018-10-16 16:09:45 · 520 阅读 · 0 评论 -
C/C++之指针
知乎上有个关于指针的问题:为什么说指针是C语言的精髓?答案五花八门,今天来加深对指针的理解。首先要知道指针的概念,在百科上, 在计算机科学中, 指针 (Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。学习任何东西,明确概念是非常重要的,指针首先是个对象,与类(class)、结构体(struct)、整数变量(int)都是一样的...原创 2018-11-16 14:21:37 · 145 阅读 · 0 评论 -
监控逻辑磁盘变化
通过获取磁盘列表,看是否发生变化。可以监控是否插入U盘,拔出U盘等。#include <stdio.h>#include <string.h>#include <io.h>#include <windows.h>#define MAXLEN 1024int main(int argc, char* argv[]){ int fir...原创 2018-12-07 12:43:12 · 277 阅读 · 0 评论 -
C++单链表实现(插入,查找,删除,销毁)
#include <iostream>#include <cstdlib>using namespace std;struct Data{ //数据部分 int key; //... bool operator==(const Data& d)const{ //重载运算符== return key == ...原创 2019-01-16 15:28:20 · 5683 阅读 · 1 评论