天国にいけるC言語入門 ヘキサ構造体 ver2.2126
char*p; p = (char *)malloc(sizeof(char) * 100);を実行した場合は100バイト分のメモリが確保されます
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);
も実行することができるんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます