プロが教えるわが家の防犯対策術!

画像処理関係のプログラムを作成しているのですが(C言語で)、動的にメモリ確保をすることが頻繁にあります。
そこで、どんな型(int,char,double,etc..)の場合でもメモリ確保できるような、1つの外部関数を作成したいと考えています。

例えば、
int Memory(引数)
{
型宣言;

int型の動的メモリ確保;

char型の動的メモリ確保;

double型の動的メモリ確保;

return 0;
}

イメージでは、上のような感じです。
もしかして、このような考えは、不可能でしょうか?
どなたか良いアドバイスがあれば、ご教授ください。
よろしくお願いします。

A 回答 (3件)

#define ALLOCATE(TYPE,SIZE) \


(TYPE*)malloc(sizeof(TYPE)*SIZE)


int* ip = ALLOCATE(int,10);
long* lp = ALLOCATE(long,20);
char* cp = ALOCALTE(char,30);
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/11 00:33

こんにちわ。



メモリの獲得は、calloc で充分だと思います。

参考URL:http://www.microsoft.com/japan/developer/library …
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/11 00:42

重箱の隅をつつくようですが…



#define ALLOCATE(TYPE,SIZE) \
(TYPE*)malloc(sizeof(TYPE)*SIZE)

これは

#define ALLOCATE(TYPE,SIZE) \
(TYPE*)malloc(sizeof(TYPE)*(SIZE))

とした方が安全ですね。

許される環境ならC++にしてnewを使った方がいいとは思いますが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/11 00:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!