Доброго всем времени суток. Извиняюсь заранее если чегото не так сказал.
В общем есь такая проблемка. Я только начинаю учить С++ читаю книжку дошел до динамических массивов вроде разобрался написал такой код (почти как в книжке) он работает но странно
программа должна выделять место под строки.
#include <iostream.h>
void main ()
{
int dd,ss;
cout << "Введите КОЛИЧЕСТВО строк массива" << endl;
cin >> dd;
cout << "Введите РАЗМЕР строки массива" << endl;
cin >> ss;
char **a; // Указатель указатель на
a = new char *[dd]; // А содержит адрес массива строк [dd]
if (a==0)
{
cout << "массив адресов не создан" << endl;
delete []a; // удаляем массив указателей
return; // конец :)
}
for (int c=0; c<dd; ++c)
{
//a[c]=new char [ss]; // каждый элемнт массива [dd] содержит адрес строки
*(a+c)=new char [ss];
// (a+c) или a[c]обязательно (массива) [ss]
if ((a+c)==0) // ПРоверка на создание строки
{ // проверяется адрес (а+с) без * !!!
cout << "строка не создана" << endl;
delete []a;
cout << "массив адресов удален" << endl;
return;
}
}
cout << "\nМАССИВ СОЗДАН\n\n...Заполнение массива...." << endl;
// заполнение массива
int v;
for (c=0; c<dd; ++c)
{
for (v=0; v<ss; ++v)
{
a[c][v]='!';
//*(*(a+c)+v)='!';
}
}
cout << "Введите любую букву(режим паузы)" << endl;
char tt;
cin >> tt;
// удаление массива
for (c=0; c<dd; ++c)
{
delete a[c];
}
cout << "Строки удалены" << endl;
delete []a;
a=0;
cout << "указатель удален" << endl;
} // это конец!
почти как в книжке... запускается нормально но работает со странностями при маленьких массивах работает вроде нормально к примеру 100 на 100..
при средних происходят сбои и ошибки например 6000 на 300
при больших или работает или происходит ошибка(**** вызвало ошибку защиты в модуле ****).
причем выделение памяти нестабильно может не выделить память для меньшего массива и выделить для большего про ограничение размеров массивов я ничего не нашел. Есть ли ограничения для динамических массвов? Есть ли какието правила для их создания? Что я сделал не правильно? Может ли глюкать среда разработки (Borland C++ 3.1 for Win(например неправильно установил))?