Не могли бы вы помочь мне с небольшой проблемой?
У меня есть следующий класс;
class Link
{
private:
Demand *demand_[NUMBER_OF_CORES][NUMBER_OF_SLICES];
public:
Link()
{
for (int i = 0; i < NUMBER_OF_CORES; i++)
{
for (int j = 0; j < NUMBER_OF_SLICES; j++)
{
demand_[i][j] = NULL;
}
}
}
int virtualPut();
}
Будет проблема с массивом demand_
.В конструкторе все хорошо, после инициализации я могу использовать if (demand_[i][j] == NULL)
.
Проблема начинается в virtualPut()
int Link::virtualPut()
{
for (int i = 0; i < NUMBER_OF_CORES; i++)
{
for (int j = 0; j < NUMBER_OF_SLICES; j++)
{
std::cout << "We're in " << i << " " << j << " \n" << std::flush;
if (demand_[i][j] == NULL) //SEGMENTATION FAULT
{
std::cout << "EMPTY\n";
}
}
}
}
А также - если я вызываю virtualPut()
в конструкторе (простодля теста) работает нормально.
Но за пределами Link
класса я использую.
void someFunction(Link *tab, int links)
{
tab = new Link[links];
tab[0].virtualPut(); //also just for test
}
В чем здесь может быть проблема?Я знаю, что могу использовать вектор, но это не поможет мне понять эту проблему с памятью.
Еще одна вещь - доктор Память говорит:
UNADDRESSABLE ACCESS: reading 0x0000000000000009-0x0000000000000011 8 byte(s)
Но почему?
EDIT! Проблема решена в комментариях, спасибо