画像処理関係のプログラムを作成しているのですが(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.2
- 回答日時:
回答ありがとうございます。
動的メモリ確保に、malloc,callocがあることは知っていたのですが、プログラムを作成中、メモリ確保する際に何度も何度も同じようなことを書いていたので、今回このような質問をした次第です。
No.3
- 回答日時:
重箱の隅をつつくようですが…
#define ALLOCATE(TYPE,SIZE) \
(TYPE*)malloc(sizeof(TYPE)*SIZE)
これは
#define ALLOCATE(TYPE,SIZE) \
(TYPE*)malloc(sizeof(TYPE)*(SIZE))
とした方が安全ですね。
許される環境ならC++にしてnewを使った方がいいとは思いますが。
回答ありがとうございます。
大変参考になりました。
下にも書きましたが、#defineで可能になるのですね。
よく考えると#defineってすごい便利ですね。
これからもっと勉強してがんばりたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- CPU・メモリ・マザーボード ノートパソコンでクロック数の違うメモリを1枚ずつ挿してデュアルチャンネルになりますか? 1 2022/11/18 00:30
- その他(パソコン・周辺機器) Windowsマシン。USBタップの「自動切れ、再接続」がうざい。解決策は? 7 2023/01/25 08:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Android(アンドロイド) galaxy s8+にUSBメモリ(type-c)を接続し、動画再生すると熱くなるのですが… USB 5 2022/06/24 17:21
- CPU・メモリ・マザーボード CPUがメモリ上の命令を実行する流れについての質問です。 3 2023/05/05 01:41
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- CPU・メモリ・マザーボード Windows10 64bitパソコンのメモリ 4GBから8GBへ増設 11 2023/01/25 18:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
allocってなんですか?
-
mallocについて
-
プログラムが途中で強制終了し...
-
newしないオブジェクトについて
-
メモリ解放について
-
x64環境で連続4GB以上のメモリ...
-
64ビットと32ビットの違い
-
メモリをたくさん使うテストプ...
-
構造体でchar name[]と*nameの...
-
C++のnewで確保したメモリーの...
-
CでOpenMP、パラレル内での共有...
-
配列の添え字の最大数とは?
-
C言語に関する質問
-
void*型のデータサイズ
-
ヒープメモリの解放について
-
stringの最大サイズ
-
free関数で動作が止まる
-
セグメントエラー
-
関数から配列を返すには?
-
VBAのプログラムで、DIAG = 1# ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mallocについて
-
c言語のポインタへの文字列入力...
-
allocってなんですか?
-
newしないオブジェクトについて
-
ヒープメモリの解放について
-
C++で、メンバもヒープに確保さ...
-
MSDNがgethostbynameではなくge...
-
プログラムが途中で強制終了し...
-
配列の添え字の最大数とは?
-
Accessで、メモリを開放するタ...
-
malloc呼び出し時のセグメンテ...
-
ヒープ領域の限界値設定
-
スタック破壊の上手な見つけ方...
-
C言語 mallocとfreeについて
-
指定したメモリアドレスの値の...
-
stringの最大サイズ
-
16進ダンプのプログラム
-
入れ子になった構造体について
-
64ビットと32ビットの違い
-
free関数で動作が止まる
おすすめ情報