K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>■delete a[];はエラーか? >>> x=new char[n]; を開放するときは delete x[]; >>>という人もいますが、これは間違いではないでしょうか。 >> >>そもそもそんな書き方ってできましたっけ。 > >柴田望洋さんとういう方の次のHPには >http://www.bohyoh.com/CandCPP/FAQ/FAQ00085.html >new/deleteのサンプルリストがあって > > int *a = new int[no]; /* 確保 */ > //中略 > delete a[]; /* 解放 */ > >とあります。 > >気になったので、今、Borland C++5.5でコンパイルしてみると >コンパイルエラーで叱られました。 > >#投稿した後でテストするあたりは、ものぐさなもので、 > すいません。(あ、石投げないで) > >■2次元配列の動的確保 >ところで、また教えてください。 > xM列yM行の2次元の配列p(というか配列もどき)を確保するときは >Borland C++5.5 のマニュアルによると > >(program A) >char *p;p=new char *[yM]; >for(y=0;y<yM;y++)p[y]=new char[xM]; > >とあります。これは、次のように書いても良いと思います。 > >(program B) >char *p;p=new char *[yM]; >p[0]=new char[xM * yM]; >for(y=1;y<yM;y++)p[y]=p[0]+y*xM; > >(A)(B)どっちが良いのでしょうか? > >ちなみに個人的な意見(というか直感)では >(A)の方がわかりやすいですね。たぶん。 >しかし、 >(B)の方が、例の「どこかの領域」を節約するため効率的と思います。 >また、(B)では、連続するデータがメモリー上に連続して確保されるはずなので >fread/fwriteなどの場合 >fread(p[0],sizeof(char),xM*yM,fp); >と一発で書けて便利と思います。 > >この点、みなさん、どうお考えですか。 > >■2次元配列の開放 >上のプログラム(B)のときのメモリ開放は >delete[] p[0]; >delete[] p; > >ですよね。 >(初心者なのでなんとなく自信がないです。くだらない質問ですいません。) > >■メモリー閲覧 >最後に、メモリー操作の結果を確認するソフトというのは >何かありますか?(メモリー閲覧ソフト?) >つまり、このソフト自体は指定されたアドレスに常駐させておき >キーボードなどでアドレス範囲を指定すると >そこのメモリーのデータが10進数で表示される >というものです。 >(なければ、私が自分で作ってみたいな...と思っています) > >以上、お願いします。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!