ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 08:26

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - Newが異常な動作をする
作成者 メッセージ
  記事の件名:   引用付きで返信する
New演算子はクラス以外の型を指定できません。その旨のエラーがでるよう、次回のバージョンアップで修正しますので、ご了承ください。

参照:
http://www.discoversoft.net/help_center ... or/New.htm

クラス以外の型のメモリ確保を行うときは、従来どおり、malloc(またはcalloc)、freeを利用してください。

なぜNew演算子でクラス以外の型を扱えなくするのかといった疑問が出てくることと思いますが、それには以下のような理由があります。

・New演算子は内部でcallocを呼び出してオブジェクトのメモリを確保している
・Delete演算子も同様に、内部でfreeを呼び出している
・New演算子を使うとreallocできない
・New演算子でクラス型以外のものを生成できるようにすると、オブジェクトか、通常の型かを見分けるための冗長的なコードを埋め込まなければならない
・様々な型に対してNew演算子を使うより、クラス型に限定したほうがオブジェクトの動きを把握しやすい
投稿記事 Posted: 2005年6月12日(日) 11:40
  記事の件名:  Newが異常な動作をする  引用付きで返信する
コード:
#N88BASIC
Dim r As BytePtr
r=New[4] Byte
lstrcpy(r, "123")
Print MakeStr(r)
Delete r
これを実行すると,デバッグ実行ではアクセス違反で止まり,リリースコンパイルで実行すると強制終了となってしまいました。
調査お願いします。
投稿記事 Posted: 2005年6月12日(日) 11:12

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean