windows 應用層程式設計基礎試題

2021-10-05 06:26:47 字數 1720 閱讀 3325

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協議 超...