作者siuol (louis)
看板C_and_CPP
標題Re: [問題] 程式記憶體區段錯誤
時間Mon Apr 18 11:57:31 2011
基本上你要知道你類別內的方法
做了什麼事情
你在copy constructor裡面
你沒有賦予這個class 裡的成員的值
他在呼叫show的時候當然就爆炸啦~(因為裡面當是垃圾資料)
另外好像是打錯了吧 ptr -> ptrl....
恩下次多注意一下
: 下面程式跑了以後會有 程式記憶體區段錯誤
: 請問我這是哪裡出錯了呢,謝謝
: #include <iostream>
: #include <stdio.h>
: #include <string.h>
: using namespace std;
: class Caaa
: {
: private:
: int total, *ptr;
: public:
: Caaa(int num):total(num)
: {
: ptr = new int[num];
: for(int i=0;i<num;i++) ptr[i]=i;
: }
: void show()
: {
: for(int j=0;j<this->total;j++)
: cout << this->ptr[j] <<" " ;
: cout << endl;
: }
: Caaa(const Caaa &c)
: {
: // int *ptr1 = new int[c.total];
ptr = new int[c.total] ;
: for(int k=0;k<c.total;k++)
//ptr1[k]=c.ptr[k];
ptr[k] = c.ptr[k];
total = c.total
: }
: ~Caaa()
: { delete [] ptr;}
: };
: int main()
: {
: Caaa a(10);
: Caaa b(a);
: a.show();
: b.show();
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.26.38
推 fjf1980:謝謝! 現在對copy constructor又感覺更深了 04/18 12:18
→ angleevil:下次可以用valgrind去找memery leak的問題 04/18 13:52