現代程式設計 homework 08

2022-04-03 14:05:14 字數 1554 閱讀 7015

#include

char *test()

main()

test在呼叫結束後

系統給test分配的資源全部被釋放

主函式main  呼叫test()所得到的值,將不會是期望的值1

截圖:1、棧  由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

2、堆  一般由程式設計者分配釋放, 若程式設計者不釋放,程式結束時可能由os** 。它與資料結構中的堆是兩回事,分配方式類似於鍊錶。

int a = 0

; 全域性初始化區

char *p1; 全域性未初始化區

main()

申請方式

stack: 由系統自動分配。 例如,宣告在函式中乙個區域性變數

intb; 系統自動在棧中為b開闢空間

heap: 需要程式設計者自己申請,並指明大小

在c中malloc函式 如int *p1 = (int *)malloc(10

);在c++中用new運算子 如int *p2 = new

int[20]; 但是p1、p2本身是在棧中的。

a)

b) unique_ptr:  該指標只能指向記憶體上的乙個資源,該指標被刪除時,繫結的資源也將被釋放

shared_ptr:對於記憶體上的統一個資源可以有多個不同的指標指向它,當所有指向該資源的指標都被刪除時,該資源被釋放

考察重點:

1. 類的定義和使用,基本成員是否完整

2. 輸入引數的檢查及其他魯棒性的考慮

3. stl和c++11元素的使用

4. 除http://之外, 是否有考慮ftp:// site:// 等情況

5. 是否考慮url中的中文

6. 演算法是否簡潔高效

7. **風格

c++0x風格

1

//借助strtok實現split

2 #include

3 #include 4

5int

main()617

18return0;

19 }

執行結果

c++ stl 風格

str 需要分割的string

pattern 分割字串的字元的string

std::vector

string> split(std::string str,std::string

pattern)

}return

result;

}

現代程式設計 作業5

在前四個作業中,我們體會了陣列,子陣列的和,二維陣列,字串和字母的處理,簡單和複雜的 ui 程式等。大家鍛鍊了命令列的處理,模組的持續重構和演化,單元測試,ui 程式的處理,全域性單例的做法,mvc 設計模式等等。同時我們還學習和練習了兩次結對程式設計,學習了如何用 規範讓自己的程式容易理解,便於維...

現代程式設計 作業5

在前四個作業中,我們體會了陣列,子陣列的和,二維陣列,字串和字母的處理,簡單和複雜的 ui 程式等。大家鍛鍊了命令列的處理,模組的持續重構和演化,單元測試,ui 程式的處理,全域性單例的做法,mvc 設計模式等等。同時我們還學習和練習了兩次結對程式設計,學習了如何用 規範讓自己的程式容易理解,便於維...

08 物件導向程式設計

class class1 類的幫助資訊 pass 沒有具體功能實現 c class1 建立class1類的例項 print c main class1 object at 0x10ed722b0 class class1 類的幫助資訊 def init self 構造方法 print 我是class...