q:頻繁new和delete 會有什麼影響?
a:增加程式cpu開銷,造成大量記憶體碎片,最終可能造成,記憶體不足,申請不到想要的空間大小。解決辦法,使用記憶體池。
以下兩種獲取字串方式,正不正確?
//返回char*指標沒有問題
char *getstring()
//返回區域性變數位址,出現意外錯誤
char *getstring()
下面結構體大小是多少?
//該結構體大小為8位元組。 因為有virtual 虛函式,結構體會多乙個虛表指標,大小為4位元組。加上成員變數int32_t 4位元組,總共8位元組。
class test
; ~test() {};
virtual void print6()
virtual int retint()
private:
int32_t m_nnum;
}gtest;
//該結構體大小為4位元組,因為沒有虛表指標,所以只計算成員變數大小(int32_t) 4位元組。
class test2
; ~test2() {};
void print6()
int retint()
private:
int32_t m_nnum;
}gtest2;
刪除std::vector其中為1的元素. 需要注意 earse(ite) 後,返回值是下乙個元素ite。
//這麼寫會異常,因為erase後,該ite已經失效,再對期執行ite++操作,會拋異常。 erase的返回值是指向下乙個元素的ite.
std::vectortest = ;
for (std::vector::iterator ite = test.begin(); ite != test.end(); ite++) }
//正確刪除方法
std::vectortest = ;
for (std::vector::iterator ite = test.begin(); ite != test.end();)
else
}
多執行緒同步:
互斥體和事件物件
//建立自動處理訊號的事件物件,間第二個wait會不會走下去?
handle h1 = createevent(null, false, false, null);
waitforsingleobject(h1, infinite);
waitforsingleobject(h1, infinite); //該wait不會走下去。因為第乙個wait完成後,h1自動被設為無訊號,如果想要使其有訊號,必須呼叫setevent(h1);
//互斥體做執行緒同步,請問第二個wait會不會走下去?
handle h2 = createmutex(null, false, null);
waitforsingleobject(h2, infinite);
waitforsingleobject(h2, infinite); //第二個wait會走下去,因為建立開始當前執行緒擁有h2的執行權,當前執行緒沒有呼叫 releasemutex(h2)釋放其擁有權,其他執行緒就不會拿到h2的擁有權。而且mutex沒有自動釋放擁有權的機制。必須呼叫releasemutex(handle),或者擁有h2所有權的執行緒執行完 才會釋放.
網路基礎 應用層
應用層 解決如何使用 響應狀態碼 http常見header content type 資料型別 text html等 content length body的 長度 host 客戶端告知伺服器,所請求的資源是在哪個主機的哪個端 口上 user agent 宣告 使用者的作業系統和瀏覽器版本資訊 re...
linux IP QUEUE機制應用層程式設計
linux核心在netfilter框架的基礎上提供了ip queue機制,從而使得基於使用者態的防火牆開發成為可能。從而可以在使用者態對報文內容進行分析,同時可以給出對這個報文的處理意見,也可以修改報文。簡單介紹一下nf中各個鉤子 hook 函式對資料報處理的返回值,即該函式告訴核心對該資料報的處理...
表示層 應用層
表示層 功能 為異種機通訊提供一種公共語言,以便能進行互操作。這種型別的服務之所以需要,是因為不同的計算機體系結構使用的資料表示法不同。例如,ibm主機使用ebcdic編碼,而大部分pc機使用的是ascii碼。在這種情況下,便需要表示層來完成這種轉換。應用層 包含了通常要使用的協議 http協議 超...