c - Malloc 与自动创建数组

标签 c

我正在尝试创建一个单词数组。像这样创建数组有什么区别:

char* myWords[10];

char* myWords = malloc(10*sizeof(char *))

我假设由于第一个是自动发生的,所以内存在函数执行结束时被回收。对吗?

最佳答案

这些是非常不同的类型。

第一个以通常的(自动)方式创建一个指针数组。这 10 个指针在函数结束之前一直有效。它们不会单独指向任何有效的内容,但每个都可以指向一个单独的字符串,该字符串可以从数组的每个元素访问。

第二个将一 block 内存分配给指向字符的单个指针。因此,您会期望它指向一个字符串(通常最多 40 或 80 个字节)。内存在您释放它之前一直有效,但指针是自动的,就像第一个一样。 (请注意,字符指针数组会衰减为 char ** 而不是 char *。)

关于c - Malloc 与自动创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398621/

相关文章:

c++ - 如何从Makefile中识别冗余库?有没有什么工具可以分析库的使用情况?

c++ - 用于分布式计算的 C/C++ 框架(MPI?)

在C中创建不同名称的文件

c - 这两个操作有区别吗?

c - 如何在 C 中绘制一个给定宽度和高度的空矩形?

c - 将用户空间代码移植到内核空间

c - container_of 宏中的 char* 有什么用?

c - C语言中有没有办法检查return后的语句?

c - 不确定这行代码在 C 中意味着什么

c - pthread_kill 与 pthread_cond_signal 在特定点暂停/恢复线程