gpt4 book ai didi

c - 静态常量数组中的出站访问

转载 作者:行者123 更新时间:2023-11-30 18:38:51 24 4
gpt4 key购买 nike

假设以下代码:

static const value_string global_variable [] = {
{ 4, "STRING1" },
{ 6, "STRING2" },
{ 9, "STRING3" },
{ 10, "STRING4" },
{ 11, "STRING5" },
{ 12, "STRING6" },
{ 13, "STRING7" },
{ 14, "STRING8" },
{ 15, "STRING9" },
};

const gchar * try_val_to_str_idx(const guint32 val, const value_string *vs, gint *idx)
{
gint i = 0;
DISSECTOR_ASSERT(idx != NULL);
if(vs) {
while (vs[i].strptr) {
if (vs[i].value == val) {
*idx = i;
return(vs[i].strptr);
}
i++;
}
}

*idx = -1;
return NULL;
}

其中 vs 是一个静态 const 数组 (global_variable ),其结构具有两个元素:一个 int 和一个指向 char 的指针。

此代码是wireshark源代码的摘录。因此,该函数假设 vs 是一个 static const 变量。

我的问题是,我是否可以假设访问静态 const 数组的出站索引(我猜它存储在 .DATA 段上)是有效的?是否可以访问有效的内存位置?或者是未定义的行为?

例如,如果我尝试查找与值 40 相关的字符串,会发生什么情况?如果它有效,我如何确定该内存位置将具有 0 值,然后 NULL 并退出 while 循环?

最佳答案

can i assume that accessing an outbound index of a static const array (that i guess is stored on the .DATA segment) is valid?

访问越界内存总是 undefined behaviour 。甚至不要尝试这样做。

关于c - 静态常量数组中的出站访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32093644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com