ActiveBasic でも C++ でも(というかもちろん)ヒープ領域のメモリを扱って動的に変数を確保することができます。
今回は要素を2つもつLong型(C++ではint型)の配列を動的に確保して 10 + 20 の計算をします。
ActiveBasic:
#console
Dim p As *Long
p = calloc( SizeOf( Long ) * 2 )
p[0] = 10
p[1] = 20
print p[0] + p[1]
free( p )
End
C++:
#include
<iostream>
int* p;
int main(){
p = new int[2];
p[0] = 10;
p[1] = 20 ;
std::cout << p[0] + p[1] << std::endl;
delete[] p;
return 0;
}
実は C++ でも calloc() は使えますが普通使わないそうです。( C++ の各種講座参照 )
そういえば ActiveBasic でも new 演算子がありましたが、あれはクラス専用です。
でも C++ では new で int 型を確保できました。これはなぜかというと、 C++ では基本型(intとか) もクラスのようなオブジェクトとしてて定義されているからなんです。だからこんなこともできます。
#include <iostream>
int* p;
int main(){
p = new int( 10 + 20 );
std::cout << p << std::endl;
delete p;
return 0;
}
これは int のコンストラクタに 10 + 20 の結果を初期化で代入するように指示したもので、ちゃんと 30 と表示されます。
ここの delete には [] がありませんが、これは配列を確保した時につけるものです。逆に配列を確保したときに [] を忘れると配列を開放できずシステムが不安定になりますのでご注意。
今日はここまで。