HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1106
ロコsdimでのメモリ解放・再確保に関する質問です。7解決


ロコ

リンク

2008/11/6(Thu) 20:29:26|NO.20669

失礼いたします。
初カキコさせていただきます。


sdim a,5000 ; 5000文字分のメモリを変数aとして確保

のようにメモリを確保した後、

(1)
変数aを使わなくなったとき、
確保したメモリを解放するには
どのようにすればよいのでしょうか?

(2)
前の変数aと同じ名前で、新たに


sdim a,3000 ; 3000文字分のメモリを変数aとして確保

のようにメモリを再確保すると
5000+3000のメモリを消費するのでしょうか、
それとも、5000→3000のメモリ消費になるのでしょうか?


なんだか、マニアックな質問で申し訳ございませんm(_ _)m
ぜひ、お教えいただきたく、よろしくお願いいたします。



この記事に返信する


check

リンク

2008/11/6(Thu) 20:39:20|NO.20670

よくわからんが、
(1)bloadなどに使うなら必要ない。
(2)sdimで再定義すると初期化されるから3000



s

リンク

2008/11/6(Thu) 21:05:15|NO.20671

メモリ節約を目指してるのでしょうかね?
自分は知識不足ですが


Mode = 0 // Modeが0なら 64×16×16 KBを確保 // Modeが1ならそれを1024文字で初期化 sdim a,64*1024,16,16 if Mode = 1 : sdim a,1024
それぞれの結果をタスクマネージャのメモリ使用量で比較してみるとわかりますー



let

リンク

2008/11/6(Thu) 21:07:05|NO.20672

解放は変数の再初期化すると簡単みたいですね
sdim a,64
64バイト以下には出来ないようですが



ロコ

リンク

2008/11/6(Thu) 22:12:49|NO.20674

ご回答くださり、ありがとうございます。

sさんのご指摘のとおり、
メモリ節約を目的としての質問でした。
説明不足で申し訳ございません。

疑問も解決しましたし、
色々、非常に参考になりました。
皆々様、ありがとうございますm(_ _)m



KA

リンク

2008/11/7(Fri) 01:56:11|NO.20676

>疑問も解決しましたし、

どう解決したのか、書かれた方が宜しいのでは。



ロコ

リンク

2008/11/7(Fri) 20:09:54|NO.20677

>どう解決したのか、書かれた方が宜しいのでは
sdimでのメモリ解放方法と再確保の質問に対する答えです。
ご回答くださった皆様ありがとうございますm(_ _)m

===============================================
(1)sdimで確保したメモリの解放は、
   メモリの再確保を使って行う
(2)sdimで再確保したメモリは、
   再確保後のサイズ分しかメモリを消費しない
===============================================



KA

リンク

2008/11/8(Sat) 02:03:07|NO.20691

>===============================================
>(1)sdimで確保したメモリの解放は、
>   メモリの再確保を使って行う
>(2)sdimで再確保したメモリは、
>   再確保後のサイズ分しかメモリを消費しない
>===============================================

解決済みと成っていて、レスするのもマナー違反とは承知していますが、疑問が一言

ひとりごとの様な内容なので、無視して頂いて結構です。



>   再確保後のサイズ分しかメモリを消費しない

マニュアルにも”再確保”と有りますし、メモリ使用量的にも見た目は(今回の場合)
減っているでしょう。(すみません、確認はしていないです)。

再確保で減ったメモリ領域がどの様に使われるのかが問題です。

この質問では2000バイトの空きが出来た事に成りますが、例えば再確保した後に2001
バイトをsdimで新規に確保しようとします。

この場合
 1:先に空いた200バイト + 1バイト分の新規領域を確保。
  (いわゆる、メモリのデフラグメント)
  (複数のメモリ領域を見に行くので、時間がかかる)

 2:新規に2001バイト分の領域を確保。
  (先に空いた分は未使用領域となる)
  (実質、メモリ使用量が増えた事になる。)

逆の場合(新規確保分が少ない場合や再確保分が増えた場合)も同じ事が言えます。

この状態を考えた場合、出来るだけ異なるサイズの再確保は行わず、最初から十分な
領域を確保しておいた方が有利な気がします。


ひとりごとで申し訳有りません。



ONION software Copyright 1997-2023(c) All rights reserved.