原创 解引用NULL會導致掛死?

來源:公衆號【編程珠璣】 作者:守望先生 ID:shouwangxiansheng   解引用NULL指針爲什麼會出錯,導致程序掛死?或者說訪問內存地址爲0的位置爲什麼會視爲非法? 先了解NULL ​參考《NULL,0,'\0'有何區別?

原创 系統編程-文件I/O

​來源:公衆號【編程珠璣】 作者:守望先生 ID:shouwangxiansheng 我們都聽過Linux下一切皆文件,實際上無論是普通的文件讀寫,還是網絡IO讀寫,它們都有着類似的操作過程。本文通過基本文件IO操作,來了解Linux“

原创 多線程就一定快嗎?天真!

  ​   在《多線程排序》中介紹了多線程排序,似乎看起來多線程快了很多,然而多線程就一定更快嗎? 爲什麼多線程就不一定快? 還是拿《多線程排序-真香!》中的程序舉例,下面是各個線程數量的排序結果: 線程數 時間/s 1 2.393

原创 幾道C/C++小題,看看你會不會?

  構造函數 下面使用無參構造函數聲明變量的方式對嗎?爲什麼?應該如何修改?   Test test(); 答案參考《認真理一理C++的構造函數》。 數組和指針 下面代碼的輸出結果是什麼?   //實際中千萬不要這麼寫 #incl

原创 作爲一個Linux/C/C++開發工程師,聊聊對Python的看法

​首發:公衆號【編程珠璣】 作者:守望先生   前言 首先說明,這不是軟文。僅僅是個人看法,同時也會仍然堅持C/C++,畢竟要喫飯。 近年來以及最近想必大家總能看到Python的身影, 有的是頻繁報道Python制霸編程語言排行榜,有的是

原创 擁抱智能指針,告別內存泄露

  前言 我們都知道,當申請的內存在不用時忘記釋放,導致內存泄漏。長期來看,內存泄漏的危害是巨大的,它導致可用內存越來越少,甚至拖慢系統,最終進程可能被OOM(out of memory)機制殺死。 C與C++中的內存泄漏 在C語言中,我

原创 善用shared_ptr,遠離內存泄露(文末福利)

​來源:公衆號【編程珠璣】 作者:守望先生       《爲何優先選用unique_ptr而不是裸指針?》中說到,如果有可能就使用unique_ptr,然後很多時候對象是需要共享的,因此shared_ptr也就會用得很多。shared_p

原创 聊點基礎的--sizeof,strlen,數組,字符串在一起能整哪些坑?

對於初學者來說,sizeof,strlen,數組,字符串整在一起是痛苦的,它總能在某些莫名其妙的時候整一個措手不及。本文看看它們在一起能挖什麼坑。 例子 在說明這些問題之前,先看一段代碼,看看你是否都理解了。(注:以下代碼結果爲編譯爲64

原创 一行註釋也能影響代碼運行?別不信!

​來源:公衆號【編程珠璣】 作者:守望先生 ID:shouwangxiansheng   沒想到吧,一行註釋也能影響運行結果 也許你在某個段子裏聽說過,某行註釋刪掉後,程序竟然不能預期執行?真的會這樣麼?你還別不信。 見證“奇蹟” 1

原创 Linux/C/C++ 不可錯過的好書

來源:公衆號【編程珠璣】 作者:守望先生 ID:shouwangxiansheng   前言 經常有讀者讓我推薦書籍,這次我就把我私藏的計算機書單分享給你們!不過由於時間匆忙,不會進行更加詳細的介紹。 以下大部分書籍可在公衆號後臺恢復關鍵

原创 有了它,再也不怕C中的複雜聲明瞭

  前言 隨着學習的深入,你可能慢慢地接觸到越來越多的複雜聲明,而這裏有一個網站,幫你識別複雜的聲明。 試一試 你知道下面的聲明是什麼意思嗎? void(*signal(int,void(*)(int)))(int); 沒關係,訪問h

原创 神奇,C代碼竟然能當成shell腳本一樣“直接”執行!

    前言 我們都知道,寫完了的C代碼是需要編譯鏈接之後才能運行的(也許你不需要手動點擊編譯,但是IDE可能幫你做了這件事),那麼能不能讓C代碼像執行shell腳本或者Python腳本一樣,直接可運行呢?類似於: $ ./main.c

原创 C語言數組下標-1你見過嗎?

  不知道你有沒有見過-1作爲數組下標的,我算是見到了。當然這一點在Python之類的語言中毫不稀奇。 ​下標-1的代碼 這裏redis源碼中的一部分: sds sdsMakeRoomFor(sds s, size_t addlen) 

原创 C語言爲什麼只需要包含stdio.h就能使用裏面聲明的函數?

  ​有人問:C語言爲什麼只需要include<stdio.h>就能使用裏面聲明的函數?這是一個看起來非常簡單的問題,但是很多初學者,甚至學了很久的人都可能沒有搞明白。 爲什麼包含即可用? 要明白包含即可用的原因,就必須講到C語言代碼是如

原创 教你寫出健壯可靠的shell腳本!

如果秉承着能跑就行的態度寫shell腳本,是很自在的,但是如果你想要寫出健壯,可靠的shell腳本,可沒那麼容易。那麼有什麼可操作的經驗或者方法嗎? 語法檢查 第一個最簡單的方法就是利用工具對腳本進行檢查,這一部分已經在《有了這個神器,再