我需要为带有指向二维字符数组的指针的结构分配足够的内存。然后填充结构体
struct Dataset
{
int size;
char (*items)[][MAX_STRING_LENGTH];
};
我尝试仅为结构体和二维数组分配内存,如下所示
struct Dataset * dataset = malloc( sizeof (Dataset) + (2 * sizeof(char[2][15])) )
然后像这样填充二维数组,但我无法做到
strcpy((*dataset->items)[0][0], "HELLO WORLD");
最佳答案
让我们了解 char (*items)[][MAX_STRING_LENGTH];
是什么。
它是指向 MAX_STRING_LENGTH 字符数组的指针。
因此,item
将需要 4 或 8 个字节,具体取决于您的平台。
无论您在 +
符号之后分配什么,都是浪费:
struct Dataset * dataset = malloc( sizeof (Dataset) **+** (2 * sizeof(char[2][15])) )
将其更改为:
struct Dataset * dataset = malloc( sizeof ( struct Dataset));
现在您需要将指针item
指向正确的某个位置,
因此分配内存并指向它:
数据集->item = malloc(sizeof(char[2][MAX_STRING_LENGTH]));
现在您有 item
指向有效内存。请使用它。
//-------------------------------------------------------- ---------------
不是答案: 我坚信你的结构声明本身是有缺陷的。如果您可以发布想要实现的目标,那么它将很有帮助。
关于c - 如何分配内存并用指向二维数组的指针填充结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54702701/