ポインタを先頭に戻すには?

解決


さち  2006-03-16 14:24:23  No: 60950  IP: [192.*.*.*]

こんにちわ、さちです。
お邪魔します。

メモリの先頭にポインタを戻したいのですが、どうすればいいのでしょうか?(メモリはmallocで確保しています)

fseekはファイルポインタを移動となっていたのですが、メモリの場合はどうすればいいのかよくわかりません。

アドバイスお願いします。

【VC++.NET  WindowsXP  MFC使用】

編集 削除
Blue  2006-03-16 14:29:18  No: 60951  IP: [192.*.*.*]

どういうことをやっているのでしょうか?
普通は先頭のポインタを記憶しておくのですけど。

どれだけ動かしたかわかっていれば、引き算でも元に戻せるのでは。


ついでに、C++なら malloc よりも new を使ったほうが良いです。

編集 削除
さち  2006-03-16 14:59:46  No: 60952  IP: [192.*.*.*]

>どういうことをやっているのでしょうか?
メモリを指定数分確保し、その中に情報を送り込んでます。
(確保した分送っているわけではありません。
例えば最初に64取得しといて、32こ分情報を送りこみます。
その後、次の位置(33個目)に追加…またはすでにある情報の一部を削除したりします。
)

>普通は先頭のポインタを記憶しておくのですけど。
記憶するとはどういうことでしょうか?;

編集 削除
επιστημη  2006-03-16 14:59:46  No: 60953  IP: [192.*.*.*]

XXX * p = new XXX[N];
XXX* keep = p; // 先頭位置をkeepに覚えとく。
....
p = keep; // ←コレがやりたかったのかな?

編集 削除
さち  2006-03-16 15:08:20  No: 60954  IP: [192.*.*.*]

ありがとうございます。

>XXX * p = new XXX[N];
>XXX* keep = p; // 先頭位置をkeepに覚えとく。

XXXの箇所って、同じ型で平気ですか?

編集 削除
επιστημη  2006-03-16 15:16:57  No: 60955  IP: [192.*.*.*]

> XXXの箇所って、同じ型で平気ですか?

ごめん、なにが疑問なのかわかりません。

編集 削除
さち  2006-03-16 15:17:17  No: 60956  IP: [192.*.*.*]

お二方、どうもありがとうございました。

>XXX * p = new XXX[N];
>XXX* keep = p; // 先頭位置をkeepに覚えとく。

の方法で、解決しました。

編集 削除