char*p; p = (char *)malloc(sizeof(char) * 100);を実行した場合は100バイト分のメモリが確保されます

ソーラー「それでは


まずは


char*p;


p = (char *)malloc(sizeof(char) * 100);


は実行した場合


何バイト分のメモリが確保されることになるか考察してみたいと思います


そのプログラムはこちらです

👇


#include <stdio.h>

#include <stdlib.h>//🌞malloc関数を使用するときはヘッダファイル<stdlib.h>をインクルードしてください


int main(void) {


char* p;


p = (char *)malloc(sizeof(char) * 100);



if (p == NULL) {

printf("メモリは確保されませんでした。");

}


else {

printf("メモリは確保されました。");

printf("確保したメモリの先頭のメモリのアドレスは %pです。\n", p);

}


printf("sizeof(char)は%dです\n", sizeof(char) );

printf("確保されたメモリは%dバイトです\n", sizeof(char) * 100);


free(p);


return 0;

}


ビルド実行結果


メモリは確保されました。確保したメモリの先頭のメモリのアドレスは 00C34B40です。

sizeof(char)は1です

確保されたメモリは100バイトです


ソーラー「このプログラムでは


malloc関数により


メモリが100バイト分確保されています


p = (char *)malloc(sizeof(char) * 100);



sizeof(char)は何かということですね


sizeof演算子とは


変数の型が何バイトの格納容量を持つかを


示すことができます


char型は1バイトのデータ容量をもつので


sizeof(char)は1


をあらわします


int型は4バイトのデータ容量をもつので


sizeof(int)は4


をあらわします


float型は4バイトのデータ容量をもつので


sizeof(float)は4


をあらわします


float型は8バイトのデータ容量をもつので


sizeof(double)は8を表します


そのプログラムはこちらです

👇


#include <stdio.h>

#include <stdlib.h>//🌞malloc関数を使用するときはヘッダファイル<stdlib.h>をインクルードしてください


int main(void) {


printf("sizeof(char)は%dバイトです\n", sizeof(char));


printf("sizeof(int)は%dバイトです\n", sizeof(int));

printf("sizeof(float)は%dバイトです\n", sizeof(float));

printf("sizeof(double)は%dバイトです\n", sizeof(double));

return 0;

}


ビルド実行結果


sizeof(char)は1バイトです

sizeof(int)は4バイトです

sizeof(float)は4バイトです

sizeof(double)は8バイトです



solarplexuss「わあ


int型,float型はともに4バイト


double型は8バイトのデータ格納容量をもっているんだね」


アレサ「sizeof演算子はかわいらしい演算子ですね」



solarplexuss「じゃあ


(sizeof(char) * 100)は100をあらわすので



p = (char *)malloc(sizeof(char) * 100);



p = (char *)malloc(100);


であらわされるってこと?」


ソーラー「そうですね 楽しみですね


では そのプログラムを実行してみたいと思います

👇

#include <stdio.h>

#include <stdlib.h>//🌞malloc関数を使用するときはヘッダファイル<stdlib.h>をインクルードしてください


int main(void) {


char* p;


p = (char *)malloc(100);//👈sizeof(char)*100を100と記述しました



if (p == NULL) {

printf("メモリは確保されませんでした。");

}


else {

printf("メモリは確保されました。");

printf("確保したメモリの先頭のメモリのアドレスは %pです。\n", p);

}


printf("確保されたメモリは%dバイトです\n", sizeof(char) * 100);


free(p);


return 0;

}


ビルド実行結果


メモリは確保されました。確保したメモリの先頭のメモリのアドレスは 00D74B40です。

確保されたメモリは100バイトです


solarplexuss「


p = (char *)malloc(sizeof(char) * 100);

p = (char *)malloc(100);


と記述しても


ちゃんとプログラムを実行できてる!」


アレサ「ほあ」


ソーラー「そうさ(^_-)-☆


p = (char *)malloc(100);


も実行することができるんだね」



  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る