Ошибка переполнения стека при добавлении члена в класс в огромном решении - PullRequest
0 голосов
/ 18 августа 2011

Пожалуйста, посмотрите на этот код:

class A
{
int a;
};

Затем добавьте еще одного члена в класс A:

class A
{
int a;
int b;
};

В моем огромном решении, когда я добавлю еще одного члена в класс (как член b в классе A) Я получаю ошибку переполнения стека.Я предполагаю, что это как-то связано с записью в незарезервированные адреса данных.

Есть ли способ найти такие места в визуальной студии?Есть лучшие идеи, почему происходит такая ошибка?

1 Ответ

3 голосов
/ 18 августа 2011

Ну, первый вопрос: вы действительно добавляете int?Если да, то этот ответ применим.

Это может произойти, когда:

  • Ваш класс настолько огромен, что его конструктор вызовет переполнение стека, поскольку он не может выделить достаточно памяти настек для выделения памяти для всех членов.
  • Вы делаете арифметику указателей где-то, что не получается при добавлении члена.
  • Вы создаете огромный массив в стеке этого объекта, который становится слишкомбольшой, когда вы добавляете этот член.

Я бы посоветовал вам сначала предоставить нам более важную информацию (платформа, компилятор, определение реального кода / класса).

...