スタックとヒープに割り当てられるメモリの量について何かを理解しようとします。 sizeof(char)= 1バイト、sizeof(void *)= 4バイトとします。 は、次のコードを与えられた:スタックとヒープへのメモリ割り当て量(c)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
int i;
char *str1 = "hello";
char str2[] = "hello";
char *str3 = (char*)malloc(strlen(str2));
//free code
return 0;
}
私たちは、ヒープに割り当てられたメモリの量が5バイトであることを言われている、と私は確かにこれはmalloc関数の金額(STRLEN(STR2)= 5)であることを理解します。 しかし、私が理解していないのは、スタックに割り当てられるメモリの量が18バイトであることです。ポインタサイズが4バイトという情報を与えると、ポインタstr1に4バイト、配列str2に6バイト( '/ 0'を含む)があると私は考えました。私は何が欠けていますか?スタックの18バイトはどこから来ますか? ご協力いただきありがとうございます!
'i'と' str3'についてはどうですか? – tkausl