阿摩線上測驗 登入

申論題資訊

試卷:96年 - 96 公務升官等考試_薦任_資訊處理:程式語言#34452
科目:程式語言
年份:96年
排序:0

申論題內容

四、Memory leakage 所造成之錯誤在程式 debug 階段往往無法即時查覺,因此為 C++ 程式設計者所需特別留意的問題之一。請說明何謂 memory leakage?其造成的錯誤 原因為何?(13 分)以下程式片斷在數個地方會造成 memory leakage,請修正其程 式內容。答案中請寫出被修正過之類別或函式(function)之完整內容,不需修正之 類別或函式無須再謄寫於答案中。(12 分) class Fruit{ private: double weight; char *color; public: Fruit(double, char *); virtual ~Fruit(); }; Fruit::Fruit(double w, char *col) { weight = w; color = new char[strlen(col)+1]; strcpy(color, col); } Fruit::~Fruit(){ delete color; } class Apple:public Fruit{ private: char *variety; public: Apple(double, char *, char *); ~Apple(); }; Apple::Apple(double w, char *col, char *var): Fruit(w,col) { variety = new char[strlen(var)+1]; strcpy(variety, var); } Apple::~Apple(){ delete variety; } main(){ Fruit *basket[20]; int i; double weight; char color[128], variety[128]; for(i=0; i<20; i++) basket[i] = new Apple(weight, color, variety); delete [] basket; }