【发布时间】:2017-01-04 02:10:51
【问题描述】:
我试图了解分配给堆栈和堆的内存量。 假设 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怎么样?
标签: c memory memory-management