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

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

11.03.2010, 20:49. Показов 6044. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru