我想动态分配一个二维数组来存储字符串。
我最初是这样声明数组的:
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/