【发布时间】:2014-11-01 20:02:16
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
//Step 1
char *key = malloc(10000);
int *arr = malloc(sizeof(int));
free(arr);
free(key);
//Step 2
char *msg = malloc(10000);
printf("Size: %zu \n", strlen(msg));
free(msg);
return 0;
}
谁能解释一下:
- 如果我同时执行步骤 1 和 2,msg 的长度将是 6,有时是 4
- 如果我同时执行第 1 步和第 2 步,但没有分配和释放密钥,则长度为 0
- 如果我只执行第2步,msg的长度将为0
为什么int和key数组的分配会影响char数组的长度? 我意识到 strlen 需要一个 '\0' 字符,但为什么它的行为不同?
【问题讨论】:
标签: c arrays memory allocation