【发布时间】:2016-05-05 04:57:31
【问题描述】:
我想定义一个定长字符串的结构,像这样:
typedef char str8[8];
所以我可以创建 固定长度字符串的数组,例如:
str8 * mydata;
mydata = malloc(100 * sizeof(str8));
我正在使用 mydata 来存储名称列表: 彼得 瓦西尔斯 脾气暴躁 莱修诺斯 贝塔 ...
在 mydata[3] 之前一切正常,它变为 LexiunosBeta 而不是 Lexiunos。 mydata[4] 但是仍然只是测试版。
这似乎只在 size(name) >= size(str8) 时发生。我将 str8 扩展到 str10 作为临时解决方案,但我真的很想知道真正的问题是什么以及如何解决它。
如果我将 typedef char str8[8] 更改为更强大的定义,例如: typedef {char * x;}str8;能解决问题吗?
非常感谢大家!
【问题讨论】:
-
超出范围的数组访问将调用未定义的行为。