Форум программистов, компьютерный форум CyberForum.ru

Динамическое выделение памяти new - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти квадратный корень из суммы всех положительных элементов двухмерного массива http://www.cyberforum.ru/cpp-beginners/thread103782.html
помогите очень-очень решить две задачки по массивам 1.Вычислить сумму элементов, больше, чем середнеарифметичне значение всех элементов. 2. Добыть квадратный корень из суммы всех положительных элементов двухмерного массива. Буду очень сильно благодарен!!!!!!
C++ Сложение и вычитание вещественных матриц ПОМОГИТЕ ПОЖАЛУЙСТА С ЗАДАЧКОЙ, СРОЧНО НУЖНО БЫЛО!!!!!!!!!, ВОТ И САМА ЗАДАЧКА.... Написать и протестировать функцию для сложения и вычитания вещественных матриц Одним из формальных параметров должен быть признак вида операции. зарание спасибо.... http://www.cyberforum.ru/cpp-beginners/thread103778.html
C++ Сортировка списков (Умножение полиномов)
Задача: Имеются 2 полинома (А и В). Они задаются, как массив коэффициентов при иксах. Нужно создать третий полином (С = А * В) и представить его в виде списка, после чего отсортировать получившийся список. НО: в памяти нельзя хранить все элементы списка, то бишь в памяти - 3-10 значений, остальное - в неком временном файле. Собственно, вопрос: Как организовать это самое "НО"?
C++ вопрос от начинающего програмиста :)
есть определенная форама, с набросаными на нее лейбами баттонами радиобаттонами имейджами и еще несколькими элементами.. вопрос, как можно вывести на печать на принтер всю эту форму целеком ? понимаю что задача не из простых, потому сам покопался немного в нете, нашел книгу с примерами, там один похожий был, но там распечатывалась таблица... Культин Н. Б. C++ Builder в задачах и...
C++ Тесты по программированию http://www.cyberforum.ru/cpp-beginners/thread103731.html
Ответьте на вопросы... Я думаю это для вас легко... 1. Можно ли комментарии: вкладывать друг в друга, либо помещать внутрь стрингов или текстовых литералов? a. да, можно; b. только по одному; c. если использовать соответствующие разделители; d. нет, нельзя; e. зависит от реализации. 2. Тип целой константы зависит от ее: a. вида;
C++ ввод массива нужно ввести массив рандомом от а до b. как это сделать? подробнее

Показать сообщение отдельно
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
12.03.2010, 22:51     Динамическое выделение памяти new
Доброго времени.
У меня в программе есть два двумерных динамических массива. Код компилируется, но возникает ошибка времени выполнения: "Инструкция по адресу "..." обратилась к памяти по адресу "...". Память не может быть "read"".
если закоментировать выделение памяти под второй массив то программа работает без ошибок.
Если попробовать выделить под второй массив совсем чуть-чуть памяти - один байт, все равно появляется ошибка времени выполененя. Что-то совсем не могу разобраться, почему процессу нельзя выделить память под второй массив? ведь под первый все выделяется...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//синтез комбинационных схем с помощю карт Вейча
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    FILE *f=fopen("table.txt","r");
    if (!f)return 1;
    int k;//количество разрядов в регистре
    int n;//кол-во столбцов в таблице
    fscanf(f,"%d",&k);
    if (k>16)return 2;
    n=2*k;
    cout << "n=" << n << endl;
 
    int m=(int)exp(k*log(2))+1;//кол-во строк
    bool **matr; //таблица
    matr=new bool*[m];
    for (int i=0;i < m;i++) matr[i]=new bool[n];
    //рисуем шапку таблицы
    for (int i=n/2 - 1;i>=0;i--)cout << 'Q' << i << ' ';
    cout <<'|';
    for (int i=n/2 - 1;i>=0;i--)cout << 'D' << i << ' ';
    cout << endl;
    //заполняем таблицу из файла
    for (int i=0;i < m;i++)
    {
        for (int j=0;j < n;j++)
        {
            fscanf(f,"%d",&matr[i][j]);
            printf("%2d ",matr[i][j]);
            if (j==(n/2-1) )printf("|");
        }
        cout << endl;
    }
    fclose(f);
    bool **KartaVeicha;
    KartaVeicha=new bool*[k];
    //строчка ниже и есть причина ошибки :(
    for (int i=0;i<k;i++) KartaVeicha[i]=new bool[m]; //m - количество наборов
    /*
    //составляем карту вейча
    for (int i=0;i<k;i++) //i - номер разряда D.
    {
        printf("for D%d\n",i);
        for (int j=0;j<m*n;j++) KartaVeicha[i][j]=matr[j][n-1-i];
    }
    for (int i=0;i<k;i++)
    {
        for (int j=0;j<n*m;j++) printf("%2d",KartaVeicha[i][j]);
        cout << endl;
    }*/
    //освобождение памяти
    for (int i=0;i<k;i++) delete [] KartaVeicha[i];
    delete [] KartaVeicha;
 
    for (int i=0;i<n;i++) delete [] matr[i];
    delete [] matr;
    return 0;
}
файл table.txt:
3
0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
1 0 0 1 0 1
1 0 1 1 1 0
1 1 0 1 1 1
1 1 1 0 0 0
среда Code::Blocks 8.02
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru