※ ChatGPTを利用し、要約された質問です(原文:メモリ動的確保について)
メモリ動的確保とは?確認してみましょう
このQ&Aのポイント
メモリの動的確保について説明します。ソースコードの一部を引用しながら、malloc関数の使い方やsizeof演算子の違いについて解説します。
malloc関数の後ろの引数で、sizeof(struct DATA)と5の違いについて疑問を持っています。sizeof(struct DATA)はメモリのサイズを計算し、5は動的に最大5までメモリを確保することを示しています。
また、動的に確保したメモリに対してmemset関数で初期化しましたが、実行エラーが発生しました。動的に確保したメモリに対してmemset関数を使用することはできません。
こんにちはです。
メモリの動的確保なのですが、
typedef struct DATA{
char name[256];
char pass[256];
int money;
}BANK;
void insert(BANK *p,int max);
int main(){
int i;
size_t st;
BANK *person;
person = (struct DATA *)malloc(sizeof(struct DATA));
//person = (struct DATA *)malloc(5);
if(person == NULL){
printf("確保失敗\n");
exit(-1);
}
//memset(person,'\0',sizeof(struct DATA));
と、言う風に、記載ソースは途中ですがメモリをとりました。
mallocの後ろの部分ですが、sizeof(struct DATA)と5ではどうちがうのでしょう??2通りともコンパイルエラーはないです。
5は動的に最大5までとるって事はわかるのですが、struct DATAの方はいくつとるのです??いくつもで入力次第です?
そして、動的したのにたいしてmemsetしたら実行エラー(コンパイルは通りました)おきました。動的にたいしてmemはダメなのでしょうか?
アドバイスいただけたらありがたいです。宜しくお願いいたします。
お礼
お返事ありがとうございます。 なんて分かりやすい説明でしょう。 本当にありがとうございます。 今callocとreallocも調べています。 もし、使い方に疑問とかあやまりとかありましたら、またご指導いただけたらうれしです。 少し調べてからわからなかったらお尋ねします。 ありがとうございました。