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

时间:2015-10-28 20:02:10

标签: c++ c code-generation

我在我的C ++项目中使用struct库。这是我第一次遇到这样的问题。我在C库中有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)

当我在20处休息时,我可以看到有等于qDebug()的数量。 ItemCount: 20也会打印itemsList->items[i]。然后一旦它进入循环,无论我放置它们在哪里都没有断点,它无限地打印{{1}}的值。我以前从未听说过这样的问题,有没有人有任何想法?在调试和释放模式下都会发生。

1 个答案:

答案 0 :(得分:2)

逻辑错误。试试这个:

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];
    }
}