C 一些坑 不常用的知識點的記錄

2021-09-24 09:29:25 字數 1711 閱讀 9828

int

main()

else

}

查閱後,知道不同編譯器對cin.sync()具體實現不同,可能vs2017的實現並不是銷毀輸入緩衝區,使用cin.ignore()成功清空輸入流。

參考見:

class

test

private

:test()

~test()

};intmain()

簡單的餓漢單例模式實現,餓漢單例模式本身就是執行緒安全的:

class

test

private

:test()

~test()

private

:static test testinstance;};

test test::testinstance;

intmain()

1) 因為testinstance是靜態變數,儲存在靜態區,因此保證了該物件的唯一性,而不會被例項化多次。

2) 當析構函式宣告為private時,無法在棧上例項化物件,因此只能考慮通過在類的內部使用靜態方式構造,或者new在堆記憶體中,再使用乙個成員函式來釋放資源如delete this;

3) 但單例模式不需要手動去釋放資源(即呼叫析構函式)。因為它只例項化乙個物件,不會在執行期產生記憶體洩漏。程式結束時,作業系統會自動釋放程序占有的全部資源,包括記憶體資源。

shared_ptr<

uint8_t

> spdata=make_shared<

uint8_t

>

(new

uint8_t

[datalen],[

](uint8_t

* p)

);

#pragma pack(1)

typedef

struct tagtestpack testpack;

#pragma pack()

記得#pragma pack(1)後還原為原來的對齊方式,同時可以使用#pragma pack(push,x)/#pragma pack(pop)。

ifstream ifs

("file_path"

, ios::binary);if

(!ifs)

//獲得長度

ifs.

seekg(0

, ios::end)

;//指標移動到檔案末尾

streampos pos = ifs.

tellg()

;//返回指標到檔案頭的距離 即檔案大小

int filelen = pos;

cout <<

"file size: "

<< filelen << endl;

ifs.

seekg(0

);//返回檔案頭

返回檔案頭

char

* srcdata =

newchar

[filelen]()

; ifs.

read

(srcdata,filelen)

;

Shiro的一些知識點記錄

1.subject.isauthenticated 本質上會根據是否讀取到session判斷是否登入,對分布式系統的改造,可以通過sessiondao去快取中讀取。可以從 defaultwebsecuritymanager defaultwebsubjectfactory.createsubject...

C 的一些知識點

include using namespace std 內聯函式,交換兩個數的值 建議直接定義,不用先在開頭宣告再在後面定義 inline void swap int a,int b int main int p newint 分配1個int型的記憶體空間 delete p 釋放記憶體 int p ...

go 的一些知識點的記錄

go env go111module on goarch amd64 gobin users kyle go bin gocache users kyle library caches go build goenv goexe goflags gohostarch amd64 gohostos da...