• ベストアンサー

動的メモリ確保の外部関数

画像処理関係のプログラムを作成しているのですが(C言語で)、動的にメモリ確保をすることが頻繁にあります。 そこで、どんな型(int,char,double,etc..)の場合でもメモリ確保できるような、1つの外部関数を作成したいと考えています。 例えば、 int Memory(引数) { 型宣言; int型の動的メモリ確保; char型の動的メモリ確保; double型の動的メモリ確保; return 0; } イメージでは、上のような感じです。 もしかして、このような考えは、不可能でしょうか? どなたか良いアドバイスがあれば、ご教授ください。 よろしくお願いします。

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

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

#define ALLOCATE(TYPE,SIZE) \ (TYPE*)malloc(sizeof(TYPE)*SIZE) int* ip = ALLOCATE(int,10); long* lp = ALLOCATE(long,20); char* cp = ALOCALTE(char,30);

techtechloader
質問者

お礼

回答ありがとうございます。 #defineで可能なのですね。大変参考になりました。 今まで、マクロはあまり使用したことがなかったので(経験浅いもので..)、これからもっと勉強していろいろ試していきたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.3

重箱の隅をつつくようですが… #define ALLOCATE(TYPE,SIZE) \ (TYPE*)malloc(sizeof(TYPE)*SIZE) これは #define ALLOCATE(TYPE,SIZE) \ (TYPE*)malloc(sizeof(TYPE)*(SIZE)) とした方が安全ですね。 許される環境ならC++にしてnewを使った方がいいとは思いますが。

techtechloader
質問者

お礼

回答ありがとうございます。 大変参考になりました。 下にも書きましたが、#defineで可能になるのですね。 よく考えると#defineってすごい便利ですね。 これからもっと勉強してがんばりたいと思います。

すると、全ての回答が全文表示されます。
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 メモリの獲得は、calloc で充分だと思います。

参考URL:
http://www.microsoft.com/japan/developer/library/vccore/_crt_calloc.htm
techtechloader
質問者

お礼

回答ありがとうございます。 動的メモリ確保に、malloc,callocがあることは知っていたのですが、プログラムを作成中、メモリ確保する際に何度も何度も同じようなことを書いていたので、今回このような質問をした次第です。

すると、全ての回答が全文表示されます。

関連するQ&A