原创 C++中New和delete的原理

New和delete的原理 當我們在程序中寫下 new 和 delete 時,我們實際上調用的是 C++ 語言內置的 new operator 和 delete operator。所謂語言內置就是說我們不能更改其含義,它的功能總是一致的。

原创 C++中的const_cast

const_cast in C++ | Type Casting operators C++ supports following 4 types of casting operators: 1. const_cast 2. static

原创 Linux 系統調用 wait()和waitpid

       一個進程在終止時會關閉所有文件描述符,釋放在用戶空間分配的內存,但它的PCB還保留着,內核在其中保存了一些信息:如果是正常終止則保存着退出狀態,如果是異常終止則保存着導致該進程終止的信號是哪個。這個進程的父進程可以調用wai

原创 Linux進程間通信之pipe

1、管道(PIPE)        從概念上說,管道是兩個進程之間的一個connection,因此一個進程的標準輸出就變成了另一個進程的標準輸入。在Unix操作系統中,管道用於進程間通信(inter-process communicati

原创 Linux 系統調用 dup()和dup2()

1、dup() dup()系統調用會創建文件描述符的一個拷貝: (1)新生成的文件描述符是進程中最小的未使用的文件描述符,0 、1 、2對應標準輸入、標準輸出、標準錯誤輸出 (2)如果拷貝成功,那麼原始的和拷貝的文件描述符可能會交叉使用

原创 C語言常用函數

1、snprintf char a='a'; char str[3]; snprintf(str,sizeof(str),"%02x",a); 解釋如下: size是限定最終生成的dest的字符數,最多拷貝size-1個字符; 一般情況下

原创 C語言中char s[]與char *s的不同

首先看一下C語言中下面兩個語句的不同: char s[10] = “abcde"; char *s = "abcde"; 兩者不同的關鍵點如下: (1)數組 char s[10] = "abcde" s是一個數組; sizeof(s) =

原创 C語言中的'0'、'\0'、0

'\0'就是8位的00000000,因爲字符類型中並沒有對應的這個字符,所以這麼寫。在數值類型裏就代表數字0。 數值類型存儲時,最高位決定正負號,其他位都爲0可不就是0了麼? '\0'是轉譯字符,意思是告訴程序,這不是字符0,我要的是數字

原创 C IN ARM64 彙編基礎-變量與表達式-基於The C Programming Language - Second Edition

C源代碼: #include <stdio.h> /* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300 */ main() { int fahr, cels

原创 C IN ARM64 彙編基礎-函數和程序結構-基於The C Programming Language - Second Edition

C源碼: #include <stdio.h> int add(int a, int b) { return a+b; } 彙編源碼: 0000000000000558 <add>: 558: d10043ff

原创 C IN ARM64 彙編基礎-函數-基於The C Programming Language - Second Edition

C源碼: #include <stdio.h> int power(int m, int n); /* test power function */ int main() { return power(2,1); } in

原创 C IN ARM64 彙編基礎-實例helloworld-基於The C Programming Language - Second Edition

1、定位Native bug的時候需要對分析彙編,所以記錄一下相關基礎 2、代碼是在Android O版本上編譯的,64位,編譯出so庫,使用objdump工具反彙編即可 3、相關源碼即彙編代碼 1)源碼: #include <stdio