我试图理解关于堆栈和堆分配的内存量的一些内容。 假设sizeof(char) = 1字节,sizeof(void *) = 4字节。 给定以下代码:
#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字节,那么我们有4个字节用于指针str1,另外6个字节用于数组str2(包括'/0')。我错过了什么?这18个字节从哪里来的?感谢您的帮助!
i
和str3
怎么样? - tkausl