看一道關於**的題:
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.入站幀的源 ...