原创 借 shared_ptr 實現 copy-on-write,將代碼移除臨界區,避免死鎖

書中提到假設有下面代碼: MutexLock mutex; std::vector<Foo> foos; void post(const Foo &f) { MutexLockGuard lock(mutex); foos.

原创 C++重載運算與類型轉換:類型轉換運算符,及相關聯的二義性問題

文章目錄重載、類型轉換與運算符類型轉換運算符定義含有類型轉換運算符的類類型轉換運算符可能產生意外結果顯示的類型轉換運算符轉換爲 bool避免有二義性的類型轉換實參匹配和相同的類型轉換二義性與轉換目標爲內置類型的多重類型轉換重載函數

原创 劍指 offer 第二版:n 個骰子的點數

題目鏈接:https://leetcode-cn.com/problems/nge-tou-zi-de-dian-shu-lcof 思路: 首先可以確定,暴力很難過這個題。 我們假設:對於某點數 x,這 n 個骰子可以有 y 種方

原创 STL 源碼剖析重要部分:allocator 源碼

文章目錄SGI 特殊的空間配置器,std::alloc,destroy 與 construct空間的釋放與配置,std::alloc第一級配置器 __malloc_alloc_template 剖析第二級配置器 __default

原创 STL 源碼剖析重要部分:迭代器與Traits編程技法

五種迭代器類型 struct input_iterator_tag { }; struct output_iterator_tag { }; struct forward_iterator_tag: public input_it

原创 shared_ptr 的內存泄漏

#include <bits/stdc++.h> #include <memory> using namespace std; class B; class A { public: A() { std

原创 C++模板與泛型編程:類模板

文章目錄定義模版類模板定義類模板實例化類模板在模板作用域中引用模板類型類模板的成員函數check 和 元素訪問成員Blob 構造函數類模板成員的實例化在類代碼內簡化模板類名的使用在類模板外使用模板名類模板和友元一對一友好關係通用和

原创 關於 shared_ptr 的線程安全

原文地址:https://www.cnblogs.com/gqtcgq/p/7492772.html     shared_ptr的引用計數本身是安全且無鎖的,但對象的讀寫則不是,因爲 shared_ptr 有兩個數據成員(指向被

原创 STL hashtable 的底層實現,與 hash_set, hash_map, hash_multiset, hash_multimap

http://www.cnblogs.com/JackyTecblog/archive/2012/08/12/2634764.html Hashtable在C++的STL裏佔據着比較重要的一席之地。其中的hash_set、hash

原创 localtime產生 SIGABRT 信號

原因,localtime 是線程不安全的函數,應改用 localtime_r !!!!注意多線程時的函數調用,用於替代的線程安全的函數都以 _r 結尾。沒踩過坑不會有印象,記住記住多線程時的函數調用!!!

原创 APUE第三版 程序 4-8(文件訪問權限與 access 函數)

如有錯誤,歡迎批評指正,本人也是才學APUE的菜鳥 先貼上程序代碼: #include "apue.h" #include <fcntl.h> int main(int argc, char *argv[]) { if(arg

原创 結構體內存對齊的計算

對齊規則: + 結構體變量的起始地址能夠被其最寬的成員大小整除; 結構體每個成員相對於起始地址的偏移能夠被min(對齊係數, 自身大小整除),如果不能則在前一個成員後面補充字節。其實就是前面所用的字節數必須是當前成員自身大小的

原创 記一筆 va_list

#include <bits/stdc++.h> using namespace std; void write(const char* format, ...) { va_list vaList; va_st

原创 UNP TCP 實例 (回射程序,未涉及 IO 多路複用) + 各方面需要注意的點

  回射程序:客戶進程向服務器發送數據,服務器回送該數據,然後客戶進程將其顯示在 stdout。   server.c Code: #include "unp.h" extern void str_echo(int); int

原创 unp.h 的安裝

https://www.bbsmax.com/A/1O5EXN4J7a/ 親測可行。