原创 從編譯器角度看本質:C/C++ 中 volatile 關鍵字詳解

原文鏈接:https://www.runoob.com/w3cnote/c-volatile-keyword.html 目的:建立語言級別的 memory barrier 實現:聲明的類型變量表

原创 c/c++進程的虛擬內存佈局

原文鏈接:https://blog.csdn.net/lxw907304340/article/details/79982808 五大區: 1、棧區(stack)— 由編譯器自動分配釋放 ,存放

原创 從演變歷史,看透本質:查找算法以及紅黑樹

原文鏈接:https://blog.csdn.net/yang_yulei/article/details/26066409 https://blog.csdn.net/yang_yulei/a

原创 C語言如何實現多參數函數

也就是c語言如何實現變長參數。 int printf(const char* format, ...); 調用慣例,參數從右到左入棧,具名參數format(稱之爲lastarg),在進程虛擬內存空間棧的頂端,即小地址端(棧是從大地址到小地

原创 如何判斷一個list裏是否有環

使用兩個slow, fast指針從頭開始掃描鏈表。指針slow 每次走1步,指針fast每次走2步。如果存在環,則指針slow、fast會相遇;如果不存在環,指針fast遇到NULL退出。 https://blog.csdn.net/mu

原创 c++如何實現可變參數

除了用可變參數宏外,還可以用initializer_list int initializerSum(initializer_list<int> il) {     int sum = 0;     for (auto ptr = il.b

原创 不用c/c++的標準庫,如何實現一個函數

不用庫的話,就只能用語言本身來實現需要的函數,在需要時可以使用os提供的api和系統調用。 就是模仿標準庫的實現。 char *strncpy(char *dest, const char *src, size_t count) {

原创 TCP、UDP數據包大小的限制

原文鏈接:https://blog.csdn.net/caoshangpa/article/details/51530685 局域網環境下,建議將UDP數據控制在1472字節以下 Interne

原创 C++ auto and decltype Explained, by Thomas Becker

http://thbecker.net/articles/auto_and_decltype/section_01.html

原创 淺談unsigned int與int相加的問題

當unsigned int 和int相加時,計算過程中會強制提升(轉化)爲 unsigned int進行計算,表達式的類型也爲unsigned int。   int main()   {       int a = -30;      

原创 memcpy的實現

  1)注意對輸入指針是否爲NULL的判斷; 2)輸入和輸出的類型 void * 3)強制將void* 指針轉換爲char* 再進行拷貝操作   void * memcpy(void *dest,void *src,unsigned co

原创 異常exception與error-code

異常與錯誤代碼的本質區別之一——異常會自動往上層棧傳播:一旦異常被拋出,執行流就立即中止,取而代之的是自動的stack-unwinding操作,直到找到一個適當的catch子句。         相較之下,使用error-code的話,要

原创 C++的類型轉換

C++的類型轉換 ——顯示轉換VS隱式轉換、轉換函數        合理的轉換可以使得程序更加簡潔,不合理的轉換往往導致程序錯誤和崩潰。C++類型的轉換可以分爲顯式轉換和隱式轉換兩種,顯示轉換是指通過類型轉換函數對類型進行轉換,隱式類型轉

原创 C/C++中volatile關鍵字詳解

 1. 爲什麼用volatile?     C/C++ 中的 volatile 關鍵字和 const 對應,用來修飾變量,通常用於建立語言級別的 memory barrier。這是 BS 在 "The C++ Programming La

原创 數據類型與右值引用

數據類型:1)標準定義了一些規則,比如佔用內存大小,以及對這段內存的解釋規則; 2)編譯器實現這些規則: 分配多大的內存,並對他解釋爲人類語言。   int  i=8;i在分配4字節內存空間: 00000000 00000000 0000