已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
3天前关闭。
Improve this question
所以我试着为struct中的字符串数组分配内存:这是一个结构:
typedef struct{
int aisleNumber;
char **aisleProducts;
}Aisle;
这就是我如何分配内存:
Aisle.aisleProducts = (aisleProducts*)malloc( sizeof(aisleProducts) );
现在,我只需要数组中的一个字符串的空间,因此我没有乘以大小。仍然不工作,我不知道为什么...
任何帮助都将不胜感激。
3条答案
按热度按时间mmvthczy1#
malloc
调用是没有意义的。对于指针数组,您应该分配n * sizeof(char*)
,因为malloc
返回指向第一个分配的元素的指针(它是一个指针),所以您不应该将结果强制转换为char*
,而是将其视为char**
。示例:
或同等产品:
或同等产品:
gg58donl2#
它不起作用,因为sizeof(...)返回编译时常量值。您的结构正好是12个字节(至少在以64比特平台为目的时)。int值是4个字节,而指标如果你想为你的字符串分配更多的内存,那么你必须手动分配和赋值你的指针,可能是一个循环。假设你有4个字符串:
编辑:正如其他人已经注意到的,12个字节是结构体的理论大小,但在实践中,它将对齐到任意值。
s1ag04yj3#
你可以试试