"C with Classes"
1644 / 1401 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
1

Освободить указатель на указатель

04.11.2015, 23:08. Показов 1023. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Interface { };
class Test : public Interface { };
 
void main()
{
    Interface** s = new Interface*;
 
    for (int i = 0; i < 1024; i++)
        s[i] = new Test;
 
    for (int i = 0; i < 1024; i++)
        delete s[i];
 
    delete s;   // Ошибка.
}
Добрый вечер друзья, как исправить ошибку?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2015, 23:08
Ответы с готовыми решениями:

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая...

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и...

Указатель типа void. Использование косвенного связывания через универсальный указатель
Необходимо использовать косвенного связывания через универсальный указатель, примерный вид: struct...

3
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
04.11.2015, 23:18 2
в 6 строке вы попросили у винды место под указатель (4 байта на 32-битной). А в 8-9 пишите в ячейки, которые вам не пренадлежат начиная с следующей итерации после первой. Как исправить ошибку? Выделить память под 10 элемментов и заполнить данными эти 10 элемментов, для 1024 такой же алгоритм.
1
21 / 15 / 6
Регистрация: 19.10.2015
Сообщений: 61
04.11.2015, 23:21 3
Лучший ответ Сообщение было отмечено _stanislav как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Interface { };
class Test : public Interface { };
 
void main()
{
    const int SIZE = 1024;
    Interface** s = new Interface*[SIZE];
 
    for (int i = 0; i < SIZE; i++)
        s[i] = new Test;
 
    for (int i = 0; i < SIZE; i++)
        delete s[i];
 
    delete[] s; 
}
Если класи наследуються то наверное еще нужно зделать виртуальний деструктор...
1
"C with Classes"
1644 / 1401 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
04.11.2015, 23:30  [ТС] 4
Всем спасибо, оба ответа хороши.
0
04.11.2015, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2015, 23:30
Помогаю со студенческими работами здесь

Зачем нужен указатель на указатель при работе с однонаправленным списком?
День добрый. Столкнулся с непониманием этой темы. В частности, совершенно непонятен алгоритм...

Как правильно удалять выделенную память под указатель на указатель?
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using...

Указатель на функцию, которая принимает в качестве параметра указатель на массив
я не понимаю. вроде делаю правильно, но выходит ошибка. есть функция. int foo(int *mas){};...

Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель
Всем привет, встретил в книге такой пример добавления узла в дерево: typedef struct tree {...

Указатель на указатель, функции для создания новых массивов?
Всем привет! У меня в коде есть несколько новых массивов, чтобы не повторяться я создам функцию...

Приведение любого двумерного массива к типу указатель на указатель
Допустим, есть несколько массивов int arr1; int arr2; int arr3; Какое преобразование нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru