将值分配给变量后获取垃圾值,看不到原因

Getting garbage value after assigning value to a variable, can't see why

本文关键字:看不到 获取 分配 变量      更新时间:2023-10-16

我正在为我的类"动态"(未显示)创建一个新对象,该对象继承自"有机",该对象继承自"存在"某些参数,例如id,biomeRow等。

有机有:features_(结构体),max_spawn_,total_spawn_,age_dur_(数组)和current_age_。

问题:创建动态对象时,除max_spawn_外,所有值都设置得恰到好处。在创建动态之前,我已经完成了我的printfs,在创建动态和为输入值创建有机时,所有这些都是正确的。

功能结构是正确的,total_spawn_是正确的,age_dur_数组和current_age_也是正确的。

除了

max_spawn_之外,所有这些都是我要求的,maxSpawn 是我传递的值 (20),max_spawn_应该是 20,但事实并非如此。我所有的 printfs 和调试控制台都显示它是大约 -858993460 的东西。我猜那只是垃圾,但我不知道当我所做的只是

max_spawn_ = maxSpawn;

所以,这是我的函数:

Organic::Organic(int id, int biomeRow, int biomeColumn, int biomeType, int beingType,
        int object, Features features, int maxSpawn, int totalSpawn,
        int age_dur[5], int current_age)
    : Being(id, biomeRow, biomeColumn, biomeType, beingType, object)
{
    features_ = features;
    max_spawn_ = maxSpawn;
    total_spawn_ = totalSpawn;
    age_ = current_age;
    for (int i = 0; i <= 5; i++) 
            age_dur_[i] = age_dur[i];
    printf("n%dn", max_spawn_);
}
age_dur

大概是age_dur_)是int [5]数组。像这样复制:

for (int i = 0; i <= 5; i++) 
        age_dur_[i] = age_dur[i];

会用某些东西覆盖接近age_dur_的东西。如果max_spawn_age_dur_相邻,它可能被垃圾覆盖。

将循环更改为:

for (int i = 0; i < 5; i++) 
  age_dur_[i] = age_dur[i];