错误的编译器代码生成或某些内存损坏?

Faulty compiler code generation or some memory corruption?

我在我的 C++ 项目中使用 C 库。这是我第一次遇到这样的问题。我在 C 库中有这样一个 struct

typedef struct {
  size_t count;
  int items[];
} items_list;

然后我这样做:

   items_list* itemsList = get_item_list_lib(...);

    if(itemsList != NULL)
    {
        qDebug()<<"ItemCount: "<<itemsList->count;
        for(int i = 0; i = itemsList->count; i++)
        {
            qDebug()<<itemsList->items[i];
        }
    }

当我在 if(itemsList != NULL) 处中断时,我可以看到有计数等于 20qDebug() 也打印 ItemCount: 20。然后一旦它进入循环,不再有断点,无论我把它们放在哪里,它都会无限地打印 itemsList->items[i] 的值。我以前从未听说过这样的问题,有人知道吗?在调试和发布模式下都会发生。

逻辑错误。试试这个:

items_list* itemsList = get_item_list_lib(...);

if(itemsList != NULL)
{
    qDebug()<<"ItemCount: "<<itemsList->count;
    for(int i = 0; i < itemsList->count; i++) // NOTE: less than, not equals
    {
        qDebug()<<itemsList->items[i];
    }
}