c - 如何动态分配二维字符数组?

标签 c arrays multidimensional-array char malloc

我想动态分配一个二维数组来存储字符串。

我最初是这样声明数组的:

char lines[numlines][maxlinelength];

然而,当 numlines 非常大时,这会导致堆栈溢出。

如何动态分配它以防止堆栈溢出?

最佳答案

使用指向数组的指针:

#define maxlinelength 10
char (*lines)[maxlinelength] = malloc( sizeof( char[maxlinelength] ) * numlines ) ;
lines[0][0] = 'A' ;

这要求最内部的大小,maxlinelength,是恒定的。

如果您使用指向可变长度数组的指针,则可以避免此限制,在这种情况下,语法保持不变,并且 maxlinelength 不必是常量。支持此功能的标准是 C99 和可选的 C11。

(常量是一个变量,其值在编译时已知。)

(澄清一下:sizeof( *lines )sizeof( char[maxlinelength] ) 相同)

关于c - 如何动态分配二维字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36354800/

相关文章:

c - 使用带套接字的 C 中的 I/O 从服务器接收响应

javascript - JavaScript 中 +a++b 是什么意思?

c - 在不知道维度的情况下在 C 中创建指向多维数组的指针

c - 在 C 中测试字符串中是否存在字符

C 向/从磁盘写入/读取内存快照

c - const 结构实例中成员的有效类型?

arrays - Excel - 根据条件提取列表

c++ - 如何在 Row Major Order 中声明 3D Array?

php - 如何在 PHP 中取消设置整个数组?

c - 如何传递任何类型的二维数组