記憶體管理有關題目

2021-09-19 17:09:09 字數 2107 閱讀 8502

看一道關於**的題:

int globalvar = 1; 

static int staticglobalvar = 1;

void test() ;

char char2 = "abcd";

char* pchar3 = "abcd";

int* ptr1 = (int*)malloc(sizeof (int)*4);

int* ptr2 = (int*)calloc(4, sizeof(int));

int* ptr3 = (int*)realloc(ptr2,sizeof(int)*4);

free (ptr1);

free (ptr3);

}//選擇題

選項: a.棧 b.堆 c.資料段(全域性區、靜態區) d.**段(常量區)

globalvar在**?__c__ staticglobalvar在**?_c__

staticvar在**?__c_ localvar在**?_a__

num1 在**?_a__ char2在**?__a_

*char2在**?_a_ pchar3在**?__a_

*pchar3在**?_d__ ptr1在**?__a_

*ptr1在**?__b_

//填空題

sizeof(num1) = _40_;

sizeof(char2) = _5__; strlen(char2) = __4_;

sizeof(pchar3) = _4或8_; strlen(pchar3) = _4_;

sizeof(ptr1) = _4或8_; sizeof(ptr2) = __4或8_;

這是c語言動態記憶體管理,在上篇文章已經提過,詳情

分析:1將類的建構函式私有,拷貝構造宣告成私有,防止別人呼叫拷貝在棧上生成物件。

2. 提供乙個靜態的成員函式,完成堆物件的建立。

class heaponly

private:

heaponly()

{} //c++98私有拷貝構造,只宣告不實現

heaponly(const heaponly& hp);

//c++11設定為刪除函式

heaponly(const heaponly& hp)=delete;

};heaponly p3;

int main()

方法一:和上面一樣,將建構函式私有,然後寫乙個靜態的方法完成棧物件的建立。

class stackonly

void print()

private:

stackonly()

{}};

//stackonly p3;

int main()

方法二:只能在棧上建立物件,即不能在堆上建立,因此只要將new的功能遮蔽掉即可,即遮蔽掉operator new和定

位new表示式,注意:遮蔽了operator new,實際也將定位new遮蔽掉。

class stackonly

void print()

private:

void* operator new(size_t n) = delete;

void operator delete(void* p) = delete;

};stackonly obj3;

int main()

在乙個32位的程序位址空間下,我們最多可以在堆上開闢的空間小於3g,因為有1g是作業系統的。

要想在堆上申請到大於3g的空間可以把執行這個程序的平台換成64位的,在64位的位址空間可以申請到大於3g的堆空間。

// 將程式編譯成x64的程序

#include using namespace std;

int main()

有關棧的題目

設計包含min函式的棧。定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 結合鍊錶一起做。容器vector代替鍊錶 eg 10,3,3,8,2,6 1.push 如果push入棧a的元素小於棧b的棧頂所對應的的元素,則將該元素p...

有關排列的dp題目

有乙個長度為 n nn 的排列 a aa,其中有一些位置被替換成了 1。你需要嘗試恢復這個排列,將 1 替換回數字。求有多少種可行的替換方法,滿足得到的是乙個排列,且不存在 ai ia i i ai i 的。n 5000 n leq 5000 n 5000 前置技巧 乙個每行 每列只有乙個棋子的棋盤...

有關交換技術基礎題目

第二單元 交換技術基礎 交換機採用無碎片直通 方式時,對到來的資料幀前多少位元組進行分析就開始 a.6 位元組 b.12 位元組 c.8 位元組 d.64 位元組 正確答案 d 交換機依據以下哪乙個資訊構建 mac位址表?a.入站幀的源 mac 位址 b.入站幀的目的 mac 位址 c.入站幀的源 ...