2017-06-13 52 views
-1

我有一个大的char数组,其中包含用作映射键的单词。对于例如“key11 key12 ..” 如果我直接使用数组中的key12,是否会认为我使用未对齐的内存,因为key12的地址不能被字大小整除?内存对齐和C数组

我不知道当我们使用c字符串时内存对齐是如何工作的。起始地址可以完美对齐,但是如果我们跳过c字符串的第一个索引,那么(在我看来)它会变得错误对齐。如果是这种情况,那么任何C字符串比较函数都必须处理大量未对齐的地址。不知何故,我觉得我在这里失去了一些东西。 。

+0

一般内存对齐是不是你需要考虑一下,除非你是在堆上作恶或哈克东西什么的。当你malloc一个char *时,将其转换为char *或将其存储在char *中的行为会导致它与char或1字节的标记对齐。 – cat

回答

1

如果您有什么可以说

char *keys = "key11 key12 key13" 

让他们每个人的最好方法是使用

char *token = strtok(keys, " \n"); 

现在令牌是指向“key11”,如果你打电话

token = strtok(NULL, " \n"); 

您将获得指向下一个键的指针。

您可以阅读here更多的strtok()

+0

Ervin,我不问如何使用strtok。但是,以一种方式询问在这里使用strtok是否会导致字符数组错位。 – user6907475