![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
画像処理関係のプログラムを作成しているのですが(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);
回答ありがとうございます。
#defineで可能なのですね。大変参考になりました。
今まで、マクロはあまり使用したことがなかったので(経験浅いもので..)、これからもっと勉強していろいろ試していきたいと思います。
No.3
- 回答日時:
重箱の隅をつつくようですが…
#define ALLOCATE(TYPE,SIZE) \
(TYPE*)malloc(sizeof(TYPE)*SIZE)
これは
#define ALLOCATE(TYPE,SIZE) \
(TYPE*)malloc(sizeof(TYPE)*(SIZE))
とした方が安全ですね。
許される環境ならC++にしてnewを使った方がいいとは思いますが。
回答ありがとうございます。
大変参考になりました。
下にも書きましたが、#defineで可能になるのですね。
よく考えると#defineってすごい便利ですね。
これからもっと勉強してがんばりたいと思います。
No.2
- 回答日時:
回答ありがとうございます。
動的メモリ確保に、malloc,callocがあることは知っていたのですが、プログラムを作成中、メモリ確保する際に何度も何度も同じようなことを書いていたので、今回このような質問をした次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
allocってなんですか?
-
ポインタのポインタの初期化法
-
128ビット変数の符合表現について
-
動的メモリ確保の外部関数
-
VBからMFC-DLL呼び出し
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
プログラムによく出てくるst...
-
配列で格納したものをmsgboxで...
-
C言語のintとcharの違いってな...
-
C言語で特定列だけを抽出して配...
-
fopne で失敗する原因
-
Integer変数をカラにしたいので...
-
VBA基本構文の作り方 2列の...
-
VBAのプログラムで、DIAG = 1# ...
-
あるディレクトリ内のファイル...
-
関数から配列を返すには?
-
char AA[]{"全角文字"};から"全...
-
セグメントエラー
-
ユーザー定義型変数の一括初期化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
allocってなんですか?
-
c言語のポインタへの文字列入力...
-
newしないオブジェクトについて
-
ヒープメモリの解放について
-
malloc呼び出し時のセグメンテ...
-
構造体でchar name[]と*nameの...
-
ビットをローテートするプログ...
-
配列の添え字の最大数とは?
-
Accessで、メモリを開放するタ...
-
スタック破壊の上手な見つけ方...
-
64ビットと32ビットの違い
-
大容量の静的な確保の限界値
-
C++のnewで確保したメモリーの...
-
stringの最大サイズ
-
GDI+におけるメモリの開放について
-
newでrealloc?
-
callocの処理速度
-
void*型のデータサイズ
-
プログラムが途中で強制終了し...
-
C++で、メンバもヒープに確保さ...
おすすめ情報