С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
3 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 52

Выделение и удаление памяти, выделенной для динамической строки

11.03.2010, 20:49. Показов 6001. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Данная функция производит ввод и собственно контроль ввода (размер массива от 1 до 20, иначе должна выдавать ошибку; при вводе букв также должна выдавать ошибку)
Также поэтому я использую ДДинамическую строку(ну чтоб можно было ввести оооочень длинную строку)
Но не в этом суть.
Программа не работает, и видимо дело в этом:

delete size;//с этой строкой прога зависает или же вылетает; если убрать эту строку, то прога работает,но конечно c detected memory leaks;

Хотя точно не знаю

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
int getSize() {
    char *size = new char[];
    bool er = false;
    do {
        er = false;
        printf("\nEnter size\n");
        gets(size);  
        for (int i = 0; i < strlen(size); i++) {
            if (size[i] >= '0' && size[i] <= '9') {
            } else {
                printf("\nwrong size\n");
                er = true;
                break;
            }
        }
 
      if (er == false) {
        if (atoi(size) < 21 && atoi(size) > 0) {
        } else {
            printf("\nwrong size\n");
            er = true;
          }
      }
    } while (er == true);
  int temp = atoi(size);
    delete size;//с этой строкой прога зависает или же вылетает; если убрать эту строку, то прога работает,но конечно c detected memory leaks;
    }
    return temp;
}
ПОМОГИТЕ ПОЖАЛУЙСТА!!!!! НА ЗАВТРА НАДО!!!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2010, 20:49
Ответы с готовыми решениями:

Выделение динамической памяти для char
Здравствуйте, возник вопрос: как выделить память для char массива? Вот, что делаю я: #include &quot;stdafx.h&quot; ...

Выделение динамической памяти для char[n]*
Есть количество цитат (quote), которые должны быть типа char* Есть переменная с колличеством цитат (quoteNum) Вопрос: как выделить...

Выделение динамической памяти для матрицы
Эта программа преобразует матрицу со случайными числами в матрицу, которая показана на рисунке ниже. Ее нужно переделать так, чтобы...

8
32 / 32 / 16
Регистрация: 18.08.2009
Сообщений: 93
11.03.2010, 21:07
Попробуй сделать так
C
1
delete [] size;
1
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
11.03.2010, 21:08
delete [] size; ты же массив удаляешь. стыдно должно быть. ))))) ну вот я опоздал
1
3 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 52
11.03.2010, 21:09  [ТС]
эх... пробовал уже... все-равно вылетает или зависает
0
 Аватар для Sergey_O
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
11.03.2010, 21:13
delete(size), не?
1
3 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 52
11.03.2010, 21:23  [ТС]
Цитата Сообщение от Sergey_O Посмотреть сообщение
delete(size), не?
нет вроде

Добавлено через 45 секунд
Цитата Сообщение от Aye Aye Посмотреть сообщение
delete [] size; ты же массив удаляешь. стыдно должно быть. ))))) ну вот я опоздал
Цитата Сообщение от SerЁga Посмотреть сообщение
Попробуй сделать так
C
1
delete [] size;
кстати пишет вот что:

ОС Windows инициировала точку останова в kontrol_vvod.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в kontrol_vvod.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит kontrol_vvod.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки

Добавлено через 5 минут
эх...ну может кто знает в чем дело?
0
 Аватар для and
22 / 22 / 3
Регистрация: 12.05.2009
Сообщений: 43
11.03.2010, 22:27
Это похоже на космос (так что не сердитесь и не ржите)
Но попробуй написать delete [] size сразу после char *size = new char[];

Хотя теоретически просто можно выделить char *size = new char[256];
Сомневаюсь что будут вводить уж оченьмногобукафф....
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.03.2010, 23:49
Цитата Сообщение от Suslik73 Посмотреть сообщение
char *size = new char[];
Вторая же строка в программе - оператор new [] требует количество элементов. Так нельзя делать!
Да и вообще странная затея. Чем Вам класс string не угодил?
0
 Аватар для Sergey_O
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
12.03.2010, 06:49
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
#include <stdio.h>
#include <iostream>
#include <string.h>
 
using namespace std;
 
int getSize()
{
        char *size = new char[256];
        bool er = false;
    do {
                er = false;
                printf("\nEnter size\n");
                gets(size);  
                for (int i = 0; i < strlen(size); i++) 
                {
                        if (size[i] >= '0' && size[i] <= '9') {  } 
        else 
                {
                                printf("\nwrong size\n");
                                er = true;
                                break;
                        }
                }
 
      if (er == false) 
      {
        if (atoi(size) < 21 && atoi(size) > 0) 
        {
                
        } else 
        {
                printf("\nwrong size\n");
                er = true;
              
        }
      }
    } while (er == true);
  int temp = atoi(size);
        delete size;
  
 
return temp;
}
из-за ваших скобок очень тяжело читать программу. при чем 1 лишняя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2010, 06:49
Помогаю со студенческими работами здесь

Выделение динамической памяти для матрицы
Здравствуйте! Подскажите, пожалуйста, что делаю не так..написала программу, которая считывает двумерный массив...с помощью операторов...

Выделение динамической памяти для двумерного массива.
#include &lt;iostream&gt; int main() { setlocale( LC_ALL,&quot;Russian&quot; ); int N, M; std::cout &lt;&lt; &quot;Введите кол-во строк в массиве:...

Выделение динамической памяти для массива точек
Доброго времени суток. Вот у нас есть структура точка struct point { double x,y; } p;

Выделение динамической памяти для чтения каждой структуры из файла
Здравствуйте! Никак не получается выделить динамическую память под каждую структуру из файла, учитывая, что я не знаю сколько структур в...

Размер выделенной динамической памяти больше чем ожидается
der operator+(char *x) //obj + строка { der newObj; int y=strlen(_name)+strlen(x)+1; cout&lt;&lt;&quot;********* &quot;&lt;&lt;y&lt;&lt;endl; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru