原创 內存管理(二)new[] 使用 delete 造成內存泄漏

正文 在說明使用new[]申請內存,而使用delete釋放的問題之前,先了解new[] 和 delete[] 的工作方式。 一.new[] 1.調用operator new[] ,由operator new[]調用n次operat

原创 內存管理(一)new 和 delete 底層實現

前言 最近在看侯捷老師的內存管理這門課,整理一下課程中的知識和自己的思路。 正文 1.new 在c++的使用中,我們使用new手動申請堆區內存。下面看一下new到底幹了什麼。 舉個例子: Complex * pc = new Co

原创 c++ 學習之 多線程(九)async,future,packaged_task,promise

1.std::future std::future是一個模板類,可以從異步任務中獲取結果。將future對象與async,packaged_task對象進行綁定,調用get()函數來獲取結果。 2 .std::async std:

原创 c++ 學習之 多線程(六)lock_guard 和 unique_lock

c++ 學習之 多線程(六)lock_guard 和 unique_lock 前言 在使用mutex互斥量時,總會出現lock後沒有unlock的情況,尤其是在判斷分支中,某些被不常進入的分支忘記unlock,我們可以用RAII機

原创 c++ 學習之 多線程(七)call_once

c++ 學習之 多線程(七)call_once 前言 有時候我們需要在第一次執行某個函數時進行一個特定的操作,後面再次執行該函數時,就不再進行這個特定操作了,std::call_once 很好的解決了這個問題。 正文 1.call

原创 c++ 學習之 引用

c++ 學習之 引用 前言 當我們需要在函數內部對外部變量進行改變值操作時,必須要傳遞實參。我們最常見的作法就是傳遞一個指向該變量地址的指針,但是指針操作,往往讓很多小夥伴很頭疼,那麼接下來給大家介紹一下可以實現同樣功能而且更加方

原创 c++ 學習之 多線程(二) thread的參數傳遞

c++ 學習之 多線程(二) thread的參數傳遞 前言 上一篇文章中講了thread的四種構造函數,接下來給大家講一講thread的參數傳遞。 正文 1.初始化構造函數 利用初始化構造函數創建對象,第一個位置必須要傳入一個可調

原创 c++ 學習之 可調用對象

c++ 學習之 可調用對象 前言 c++中,在使用一些基於範圍的模板函數時,常常需要我們傳入一個可調用對象,以指明我們需要對範圍中的每個元素進行怎樣的處理。在thread的初始化中也需要傳入可調用對象來作爲線程的入口函數。可調用對

原创 c++ 學習之 多線程(五)互斥量 mutex

c++ 學習之 多線程(五)互斥量 mutex 前言 在多線程的應用中,常常會涉及到共享數據,當我們直接對共享數據進行操作時,比如多個進程同時進行寫操作時,就會發生異常,接下來我們引入互斥量來解決這個問題。 正文 1.lock()

原创 c++ 學習之 多線程(八)條件變量condition_variable

condition_variable成員函數 condition_variable 是 c++11 提供的一個可以實現線程同步的類。下面來總結一下條件變量condition_variable的用法。 1. condition_va

原创 c++ 學習之 多線程(一) thread對象的創建

c++ 學習之 多線程(一)thread對象的創建 前言 在之前的c++標準中,並沒有提供對於多線程的支持,所以在應用中的開發需就要依賴操作系統提供的多線程接口,或者應用第三方的多線程庫。這樣一來,代碼的移植性和開發的成本就存在了

原创 C語言從代碼到可執行程序的過程

C語言從代碼到可執行程序的過程 一個C語言程序,從代碼到可執行程序的過程需要四個步驟:預處理,編譯 ,彙編,鏈接。 1.預處理 預處理負責對源代碼進行文本處理。主要處理代碼中以字符#開頭的命令。 有以下幾個處理的地方: (一)解析

原创 Windows 之 跨進程邊界共享內核對象

跨進程邊界共享內核對象 在很多情況下,我們需要跨進程邊界共享內核對象。實現的方法有三種,繼承對象句柄,給對象命名,複製對象句柄。 1.繼承對象句柄 只有當進程具有父子關係時,纔可以使用對象句柄的繼承性。想要父進程生成一個子進程,並

原创 Windows 之 內核對象

1.什麼是內核對象: 內核對象的類型有很多,比如存取符號對象、事件對象、文件對象、文件映射對象、I/O完成端口對象、作業對象、信箱對象、互斥對象、管道對象、進程對象、信標對象、線程對象和等待計時器對象等。 內核對象是內核分配的一個

原创 c++ 學習之 多線程(三) thread類的成員函數

c++ 學習之 多線程(三) thread類的成員函數 前言 thread類提供了幾個成員函數,由於構造函數之前有講過,所以本文着重分析一下其他函數的用法。 正文 1.~thread() 析構函數,用來銷燬thread對象,但是