【发布时间】:2017-10-26 04:10:22
【问题描述】:
char *str;
str = malloc(sizeof(char) * 5);
这段代码为str类型的变量char *分配了5个连续的内存槽。
char *str;
str = malloc(sizeof(char *) * 5);
这应该分配 5 倍于 char 数组的内存。但是由于一个 char 数组在我们声明它之前是没有大小的,所以这个语句实际上做了什么?
【问题讨论】:
-
* 表示指针不是数组。它为 chars 分配一个包含 5 个指针的块
-
char *本身就是一个数据类型(pointer-to-char),所以第二条语句分配一个内存块来存储 5 个 char-pointers。 -
顺便说一句,在我的系统上 (Linux/x86-64)
sizeof(char*)是 8(就像任何指针的大小一样)
标签: c pointers malloc dynamic-memory-allocation allocation