> > analさん
> callocがスタック領域を消費するなんて仕様ありましたっけ?
> 浅学なので間違っていたらすみません。
こちらも同意見です。
analさんは、何か別のものと思い違いをしていそうですね。
malloc、calloc はヒープ領域からメモリを確保しますが、
malloca、alloca はスタック領域からメモリを確保します。
↑
これと混同してると思います。
・malloc
http://ja.wikipedia.org/wiki/Malloc#.E5.8E.9F.E7.90.86
↑
昔は非標準関数がたくさんありましたね。
スタック領域からメモリを確保して、解放しなくて済む関数を知ったとき便利だと思いました。
y.tackさんへ
> なかんじで似てるかな。
ちょっと違うと思いますね。
> 1:sdim many_ch,64
> 3:Longint many_ch(64)
これは正しそうです。
Longint が long long int をサポートした何かなのでしょうね。
> 2:gv_of_many_ch=0:of_many_ch=gv_of_many_ch
違いますね。
「char** of_many_ch;」は「char*of_many_ch;」へのポインタと解釈します。
そうすると「char*」がHSPでは文字列型と解釈できるので文字列型へのポインタとなり、
sdim s
dup ps,s
ですか。
> 4:gv_int=0:ptr_int=gv_int
こちらも
dim n
sup pn,n
ですね。
ユーザ定義命令などでは「char** of_many_ch;」を「array」にして「int*」は「var」ですか。
つまり、「var」とは「void*」で void とは万能型を意味して char、int、short、long、float、double などが当てはまります。
HSPは変数は代入する記述で整数型(int)、実数型(double)、文字列型(str)になるのでC言語の void 型と見ることができます。
だから「var」はどの型にも当てはまる「void*」となるわけです。
よって
int* a var a
short* a var a
long* a var a
float* a var a
double* a var a
ただし「char*」は文字列と解釈すべきですから「char* s」は「str s」にすべきかな。