原创 c語言內存申請函數

幾個常用的內存分配函數 void* malloc(size_t size) void* calloc(size_t memb,size_t size) void* realloc(void *p,size_t size) v

原创 02 寄存器和描述符

描述符 GDT;全局描述符表:主要存放操作系統和個任務公用的描述符 非常重要:在計算機轉換成保護模式之後,gdt就用來表示內存中的位置 公用的數據和代碼段描述符,各任務的TSS描述符和LDT描述符 tss是任務狀態段,存放各個

原创 intel專用寄存器EFLAGS標誌寄存器

0x01 之前在上一篇文章說到ZF,CF,SF,OF,這幾個位,這幾個控制位是上一條語句的執行結果的狀態,這些狀態對於執行是非常重要的,那麼是什麼來保存和控制着這些值呢? 答案就是EFLAGS寄存器,兩個專用寄存器之一,一個是e

原创 數組裏存的是什麼,還有指針指向字符串問題

0x1   原由 一直被字符串數組以及指向字符串指針所初的地址所困擾,然而今天第三次看c/c++安全編碼的 時候又遇見了這個問題,strlen(const char)所以我們要來思考以下這些周邊的問 0x2問題 數組a

原创 內存與指針day1

##6.19 1.內存地址: num變量 = *(&num) 遊戲外掛 將程序設置爲dll動態鏈接庫文件 寫入_declspec(dllexport) void go(){ /*聲明爲導出函數 int *p = (int *)

原创 05 彙編中while

彙編需要考慮的四個要素 - 寄存器與寄存器堆 - 條件碼 - 存儲器 - 指令寄存器 條件碼 :上一條指令運行結果反應在條件碼中 - CF carry clag 進位 - 用於檢測無符號整數運算溢出 - ZF ze

原创 06 08x86彙編編程

彙編綱領:與硬件進行交互,將其他語言轉換成彙編 Hello World 以. 開頭的都是彙編指示,指導彙編器如何進行彙編 其中.file 和 .def用於調試(通常可以忽略) .text 代碼段 .p2

原创 sizeof(),wcslen,strlen對於字符數組的使用

1.前提 1.1字符的種類   字符分爲兩種 字符常量char    - 字符常量      1字節    -多字符字面量    常見3字節 寬字符wchar_t      windows使用UTF-16編碼

原创 C++的Memcpy與Memcpy_s函數解析

Memcpy函數 一. 函數內容 ** 1.1函數原型 ** void * Memcpy(void * dest,const void * src,size_t count)這是一個函數指針 接收的是一個地址 dest

原创 語法錯誤:缺少;在的前面

第一種情況 第二種 這兩種情況都屬於類的超前引用,雖然寫了宏定義#pragma once,該處理方式與編譯器的預處理相關,建議編寫時將公共庫放入pch.h中,其他自己寫的頭文件就不要包含了,以免進行二次包含! 解決方案 1.

原创 畢業設計qt視頻播放器遇見的問題

int MainWindow::addPlayFile(QStringList **list) { QStringList *fileName = new QStringList; *fileName = QFi

原创 c++11特性原始字符串字面量

前景帶入 大三第一個學期學過半吊子的python瞭解到,python中爲了避免程序員過多的使用轉義字符‘\’ 例如“C:\\inetpub\\wwwroot”,如果使用python的原始字符串就是 r"C:\inetpub\ww

原创 函數回調沒有找到重載的成員函數

0x01 現象 今天進行qt視頻播放器的時候,定義了一個mediaplayer,但是要實現倍速播放,和全屏播放,沒得辦法只能使用函數回調,以下是錯誤信息 以下是頭文件 #pragma once #include "abstruct

原创 多態vptr指針思考一

0x01 多態是c++的靈魂之處,c++實現多態就是使用vptr指針,實現多態的三個條件, 1. virtual 關鍵字 2. 子類重寫父類的虛函數 3. 父類指針調用子類對象虛函數 0x02 vptr的存儲問題 —vp

原创 使用函數指針實現類函數重載

函數指針 注:該彙編使用intel格式,及與AT&T相反的操作方式 0x01 指針無法區分數據還是代碼 1. 我們知道c/c++之所以偉大是因爲很多方面,其中就是因爲指針可以操作內存中的任意數據,理論上只要是在內存中,都可以操控