原创 從編譯器角度看本質: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