我在學習《C++編程藝術》這本書,第二章的垃圾回收器,代碼怎么運行不起來啊?
在VC6.0下運行報錯彈出來個框說是記憶體越界問題,在Linux下直接就是沒有編譯通過啊。程式就是要回收越界的記憶體。求解決
uj5u.com熱心網友回復:
把代碼貼出來看看吧uj5u.com熱心網友回復:
代碼要好幾百行,,,,怎么才能讓你看見呢?uj5u.com熱心網友回復:
http://user.qzone.qq.com/359324687/infocenter#!app=2&via=QZ.HashRefresh&pos=1368151689gc.h點連接就可以看見。下面是show.cpp
show.cpp
#include <iostream>
#include <new>
#include "gc.h"
using namespace std;
int main() {
GCPtr<int> p;
GCPtr<int> q;
try {
p = new int(10);
q = new int(11);
cout << "Value at p is: " << *p << endl;
cout << "Value at q is: " << *q << endl;
cout << "Before entering block.\n";
// Now, create a local object.
{ // start a block
GCPtr<int> r = new int(12);
cout << "Value at r is: " << *r << endl;
} // end the block, causing r to go out of scope
cout << "After exiting block.\n";
} catch(bad_alloc exc) {
cout << "Allocation failure!\n";
return 1;
}
}
uj5u.com熱心網友回復:
看看原書上是在什么編程環境下運行的?uj5u.com熱心網友回復:
木有寫。。。
uj5u.com熱心網友回復:
我正好也在看這本書,書上的代碼確實有問題,我自己改了一下,好像可以運行了。uj5u.com熱心網友回復:
應該是垃圾回收collect()那個函式寫得有問題,你自己去除錯一下,到gclist.remove(*p)這個好像有問題的。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140555.html
標籤:基礎類
