_>> происходят ошибки в строке _>> iii = new int*[n];
_>>в чем может быть дело??? спасибо
АШ>Какая ошибка? Покажите код воспроизводящий проблему.
код тот же самый, выполняется в основной программе нормально, а внутри класса — не работает ((((
void TCENS::GetMemForGrid(int ** pGrid, int GridRange2)
{
int i;
int Grid11[40][40];
int ** iii;
iii = new int*[10]; // ЗДЕСЬ ПРОИСХОДИТ ОШИБКА
for(i = 0; i < GridRange2; i++)
{
iii[i] = new int[GridRange2];
memset(iii[i],0, sizeof(int)*GridRange2);
}
void TCENS::GetMemForGrid(int ** pGrid, int GridRange2)
{
int i;
int Grid11[40][40];
int ** iii;
iii = new int*[10]; // ЗДЕСЬ ПРОИСХОДИТ ОШИБКАfor(i = 0; i < GridRange2; i++)
{
iii[i] = new int[GridRange2];
memset(iii[i],0, sizeof(int)*GridRange2);
}
Grid = iii;
};
оно вообще даже близко компилятьсо не должно. Работать кстати тоже. Уточните вопрос. Вернее поправьте хотя бы последнюю строчку и сигнатуру метода, а то pGrid наружи не поменяется.
PS хотя скорее всего просто что-то где-то напутали
кстати для двумерных массивов лучше сделать обертку для std::vector<T> massiv(sizeX * sizeY) и не мучаться с ручным управлением памяти.
Re[3]: динамический массив и классы
От:
Аноним
Дата:
12.01.08 14:41
Оценка:
Здравствуйте, piero_, Вы писали:
_>код тот же самый, выполняется в основной программе нормально, а внутри класса — не работает ((((
_>void TCENS::GetMemForGrid(int ** pGrid, int GridRange2) _>{ _> int i; _> int Grid11[40][40];
_> int ** iii; _> iii = new int*[10]; // ЗДЕСЬ ПРОИСХОДИТ ОШИБКА _> for(i = 0; i < GridRange2; i++) _> { _> iii[i] = new int[GridRange2]; _> memset(iii[i],0, sizeof(int)*GridRange2); _> }
_> Grid = iii; _> };
Могу предположить — ошибка чтения/записи в память где то раньше по ходу выполнения программы.
Тогда, если этот код в программе(например "основная программа") выполняется до ошибки в работе с памятью — всё нормально. Если этот код выполняется после ошибки в работе с памятью("внутри класса"), тогда по стечению обстоятельств получаем ошибку AV в строке нормального кода.
В любом случае, посмотри на корректность работы с памятью. Работаешь в VS ? Под отладчиком, debug-конфигурацию, запускать пробовал ? Можно использовать DCRT ? Попробую какой-нибудь профайлер.