• ベストアンサー
  • 困ってます

GlobalAllocの変数を関数に引き渡したい

  • 質問No.7562341
  • 閲覧数159
  • ありがとう数0
  • 回答数1

お礼率 47% (44/92)

あるプログラムでGlobalAllocで指定バイト数を割り当てた変数を別の関数に引き渡したいのですが、やりかたが分からず困っております。
手元にある本はGlobalAllocについてすら書いておらず…
以下のようなプログラムになります。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
int math( int a, int b, unsigned short c ){
// 関数中身の演算に意味はない
unsigned short sum;
for( int i=a; i<b; i++ )
sum += c[i];
return sum;
}

int main(){
int Depth = 6;
int sum;
unsigned short *mem = GlobalAlloc( GPTR, Depth*sizeof(unsigned short) );

sum = math( 1, 3, mem ); // これな風にmemを値を引数として渡したい

return 0;
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

お分かりになる方がおられましたら、ご回答いただけると幸いです。
宜しくお願い致します。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 53% (2177/4070)

GPTRでGlobalAlloc()しているのですから、普通のポインタと同じように扱えばいいだけかと。

>unsigned short *mem = GlobalAlloc( GPTR, Depth*sizeof(unsigned short) );
>sum = math( 1, 3, mem ); // これな風にmemを値を引数として渡したい
だったら、
>int math( int a, int b, unsigned short c ){

int math( int a, int b, unsigned short *c ){
でしょう。
# ただし、普通のポインタでも同じですがアドレス渡しただけではその先にどれだけのメモリがあるのかは判りませんのでご注意を。
# 今回の例なら…第2引数で渡しているような感じになりますかねぇ。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ