intの配列を指すポインターの配列があります。ハードコードされたintの配列(下の「array」をチェック)を作成し、それをポインターの配列(下の「bar」をチェック)に挿入したいのですが、私が知る限り、それはまだポインターの配列です。 intの配列を指します。
正常にコンパイルされます。警告はありません。正常に動作します。正常に閉じます。少なくとも、現在コメント化されているdeleteステートメントをデストラクタに導入します。
私のコンパイラはこの時点でより良いデストラクタになると思いますが、私が間違っていることに興味があります。ターミナルウィンドウは、巨大なメモリマップを表示するだけです。グーグルとSOの検索はあまり役に立ちませんでした。
class foo {
public:
int **bar;
int aSize;
//CONSTRUCTOR
foo(int aSize) {
this->aSize = aSize;
bar = new int*[aSize];
for (int i=0;i<aSize;i++) {
bar[i] = new int[aSize + i];
for (int j=0;j<(aSize + i);j++) {
bar[i][j] = 0;
}
}
}
void myfunc(int *pointer) {
bar[0] = pointer;
}
~foo() {
for (int i=0;i<aSize;i++) {
//delete[] bar[i];
}
delete[] bar;
}
};
int main() {
foo *obj = new foo(5);
int array[] = {1,2,3,4};
obj->myfunc(array);
delete obj;
return 0;
};
私はおそらく何か悲劇的なことをしたことを知っています。まだ何なのかわかりません。私がSTLや他のテンプレートを使用していないのには理由があります。それは単にこれを学びたいからです。最大の批判を歓迎します。