История изменений
Исправление XMs, (текущая версия) :
Ты пишешь в неинициированный указатель. Результат такой операции — UB, чего ты и наблодаешь. Делать надо было либо так:
#include <iostream>
#include <cstdint>
#include "plane.hpp"
static float bx[][6] = {{0, -5, -6, 0, 6, 5}, {1, 1, 1}};
using namespace std;
Plane::Plane(int planetype)
{
cout << sizeof(bx[planetype]) << " " << sizeof(bx[planetype][0])
<< " " << sizeof(bx[planetype]) / sizeof(bx[planetype][0]) << endl;
bodyx = new float[2 * 6];
size_t limit = sizeof(bx[planetype])/sizeof(bx[planetype][0]);
for(size_t k = 0; k < limit; k++)
{
bodyx[k] = bx[planetype][k];
cout << bodyx[k] << " ";
}
cout << endl;
}
Plane::~Plane()
{ delete[] bodyx; }
Либо так:
#include <iostream>
#include <cstdint>
#include "plane.hpp"
static float bx[][6] = {{0, -5, -6, 0, 6, 5}, {1, 1, 1}};
using namespace std;
Plane::Plane(int planetype)
{
cout << sizeof(bx[planetype]) << " " << sizeof(bx[planetype][0])
<< " " << sizeof(bx[planetype]) / sizeof(bx[planetype][0]) << endl;
bodyx = bx[planetype];
size_t limit = sizeof(bx[planetype])/sizeof(bx[planetype][0]);
for(size_t k = 0; k < limit; k++)
{
cout << bodyx[k] << " ";
}
cout << endl;
}
Исходная версия XMs, :
Ты пишешь в неинициированный указатель. Результат такой операции — UB, чего ты и наблодаешь. Делать надо было либо так:
#include <iostream>
#include <cstdint>
#include "plane.hpp"
static float bx[][6] = {{0, -5, -6, 0, 6, 5}, {1, 1, 1}};
using namespace std;
Plane::Plane(int planetype)
{
cout << sizeof(bx[planetype]) << " " << sizeof(bx[planetype][0])
<< " " << sizeof(bx[planetype]) / sizeof(bx[planetype][0]) << endl;
bodyx = new float[2 * 6];
size_t limit = sizeof(bx[planetype])/sizeof(bx[planetype][0]);
for(size_t k = 0; k < limit; k++)
{
bodyx[k] = bx[planetype][k];
cout << bodyx[k] << " ";
}
cout << endl;
}
Plane::~Plane()
{ delete[] bodyx; }
Либо так:
#include <iostream>
#include <cstdint>
#include "plane.hpp"
static float bx[][6] = {{0, -5, -6, 0, 6, 5}, {1, 1, 1}};
using namespace std;
Plane::Plane(int planetype)
{
cout << sizeof(bx[planetype]) << " " << sizeof(bx[planetype][0])
<< " " << sizeof(bx[planetype]) / sizeof(bx[planetype][0]) << endl;
bodyx = bx;
size_t limit = sizeof(bx[planetype])/sizeof(bx[planetype][0]);
for(size_t k = 0; k < limit; k++)
{
cout << bodyx[k] << " ";
}
cout << endl;
}