Динамический массив для чайников.
От: shvellerr Россия  
Дата: 10.02.08 21:27
Оценка:
Доброго всем времени суток. Извиняюсь заранее если чегото не так сказал.
В общем есь такая проблемка. Я только начинаю учить С++ читаю книжку дошел до динамических массивов вроде разобрался написал такой код (почти как в книжке) он работает но странно
программа должна выделять место под строки.

#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(например неправильно установил))?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.