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

Проблема с выделением памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Посоветуйте отличную книжку для новичка по изучению С++ http://www.cyberforum.ru/cpp-beginners/thread349144.html
Посоветуйте отличную книжку для новичка по изучению С++,который вообще не знаком с языком...
C++ Дерево поиска Дано дерево поиска, ключи которого – целые числа (положительные и отрицательные). Определить К-е «–»-е число, следующее за «+»-м числом при прямом просмотре дерева (TLR). У меня программа похоже вообще неправильно работает. Подскажите ошибки, пожалуйста. Помогите преобразовать эту программу в классы. #include <iostream.h> #include <iomanip.h> #include <stdlib.h> #include <conio.h> struct... http://www.cyberforum.ru/cpp-beginners/thread349135.html
C++ Как корректно вручную ввести данные
Как реализовать ручной ввод в данной программе? (Задание: вставить заданный пользователем элемент Е до и после элемента с минимальным ключом в заданном пользователем односвязном списке.) #include <iostream.h> #include <time.h> #include <stdlib.h> #include <conio.h> typedef int Tp; struct NodeBase {
C++ Вывод заданных чисел
Для вывода цифр 1,2,3 в различных комбинациях дана программа #include<iostream> #include<stdlib.h> using namespace std; int main () {setlocale(LC_ALL,"Rus"); for(int i=1;i<4;i++) for(int i1=1;i1<4;i1++)
C++ Отсутствие совместимости. http://www.cyberforum.ru/cpp-beginners/thread349131.html
Дилема такова,что я не могу заметить ошибки именно в ходе решения(быть может со скобками переборщил),а точнее нахождения y1 и y2.Ответы должны быть аналогичными,заранее извиняюсь за отсутствие начальных данных,кто чем может помогите.Заранее спасибо. #include<iostream> #include<cmath> using namespace std; int main() { double m,a,b;
C++ С++ массив объектов Люди начался новый учебный год опять обращаюсь за помощью File Имя файла.размер. количество обращений. создать массив объектов.ввывести. создать список файлов .размер которых превышает заданный. создать список упорядочить в алфавитном порядке создать список число обращений к которым превышает заданный вот как звучит само задание подскажите как мне сделать список из массива объектов не... подробнее

Показать сообщение отдельно
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
07.09.2011, 23:18     Проблема с выделением памяти
у вас поле-член класса int* table, а в конструкторе вы объявляете локальный указатель int** table. В строке 25 компилятор оперирует с указателем int* table (поле-член класса), а не с локальным указателем int** table.
t0.table[i][j] некорректно по этой же причине (потому что table --- это int*).
Решение: сделать указатель-член класса типа int**, то есть int** table. И инициализацию делать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Table(int size){
        table = new int* [size];
        for (int i = 0; i < size; i++)
                table[i] = new int [size];
        }
 
    Table(const Table &t0){
        table = new int* [t0.size];   //выделение памяти для матрицы
        for (int i = 0; i < t0.size; i++)
                table[i] = new int [t0.size];
 
        for (int i = 0; i < t0.size; ++i)
            for (int j = 0; j < t0.size; ++j)
                table[i][j] = t0.table[i][j];      //строка 25
        }
В деструкторе код такой:
C++
1
2
3
4
5
~Table(){
        for (int i = 0; i < size; i++)
                delete[] table[i];                    //удаляем массивы int*-ов
                delete[] table;                       //удаляем массив int**-ов
        }
 
Текущее время: 22:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru