原创 從測試角度寫代碼(二)宏定義快速定位

從測試角度寫代碼(二)宏定義快速定位 一.爲什麼需要宏快速定位問題 通過上面我們已經用了調試分級將調試信息和交互信息分離,可以快速找到分離出交互信息和調試信息。但是在調試信息過程中,比如內存申請,我們會malloc很多次,在

原创 從測試角度寫代碼(一)調試分級

從測試角度寫代碼(一)調試分級 一.爲什麼要使用調試分級 調試分級並不是一定要做的,需要根據具體情況進行分析,比如我們在使用開發小型代碼時,是完全不需要使用調試分級的,反而會給我們帶來了代碼編寫的複雜性。調試分級一般用於大型項目開

原创 通用鏈表 - 如何寫出高質量代碼

通用鏈表 - 如何寫出高質量代碼 在項目開發的過程中,我們不可避免的遇到一些在編譯前無法知道信息大小的場景,需要使用鏈表存儲。比如解TS文件流時需要解出pat表,pmt表,sdt表,eit表等。但是每一種表所組成的鏈表結點信息

原创 線程分離 - 線程也會內存泄漏

線程分離 - 線程也會內存泄漏 線程退出後,釋放了所有佔用的資源嘛? 上述問題我們通過以下代碼進行測試,不斷地創建線程,每次創建線程計數器加一,只到創建線程失敗,打印出已創建的線程數  ​  #include <stdio.h>  

原创 多線程API - 小白如何快速上手併發編程

多線程API - 小白如何快速上手併發編程 線程的基本概念 一.線程和進程的區別(linux環境下) 進程是資源管理的最小單位,線程是系統執行的最小單位 線程和進程都有對應的PCB和TCB,在linux內核中創建線程和進程

原创 回調函數 - 靈活的函數指針

回調函數一 同步回調及代碼 什麼是回調函數? 編程除了分爲面向對象和麪向過程外,還可以分爲系統編程和應用編程。如下圖所示,主函數和callback函數在應用層,library函數在系統層。在使用時,main將callback函數指針傳入

原创 快速排序 - 一個蘿蔔一個坑

快速排序 - 一個蘿蔔一個坑 快速排序算法的通俗理解 quick_sort簡單來說就是一種用到遞歸的分治算法,每一個遞歸基就是採用拔蘿蔔填坑的思想。假設有一排大小不同的蘿蔔,我們想要把蘿蔔從小到大挖坑進行排列,蘿蔔太多直接對比壓根看不過

原创 字符串函數構析

字符串函數構析 今日參加了一場筆試,剛好程序題問到一道strcpy函數構建,剛好之前看過字符串函數,同時網上文章大部分都是介紹了下函數的用法,缺少了函數的實現,今日就來自己構析下常見的字符串函數,字符串函數位於標準庫的頭文件string.

原创 文件權限修改

文件權限修改 瞭解文件所有權 使用ls -l (-h)命令查看文件具體屬性   文件所有權 硬連接個數 文件所有者 文件所在組 文件大小 時間 名稱 -rw-r--r-- 1 root root 2187 Jan 28 19:05