Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.04.2020
Сообщений: 33

Как правильно реализовать удаление данных после вызова функции?

13.08.2020, 02:07. Показов 548. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В программе вызывается функция где применяется оператор new, как правильно реализовать удаление данных после вызова функции?

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
#include <iostream>
#include<string>
#include <fstream>
#include <cmath>
#include <ctime>
 
using namespace std;
 
const char* maxn(const char *arr[],int size)
{
    int max = strlen(arr[0]);
    char *str=new char[strlen(*arr)+1];
    for (int  i = 1; i < size; i++)
    {
        if (strlen(arr[i])>max)
        {
            max = strlen(arr[i]);
            strcpy_s(str, strlen(arr[i])+1, arr[i]);
        }
    }
    return str;
}
int main()
{
    setlocale(LC_ALL, "ru");
 
    const char *ch[4]{ "jdhhveb","jhvjhduvhsvs","jvcvsjvhdbhvbhdbv","socsocujsjcifvvdbvhrhbvhrhbhr" };
    cout<<maxn(ch, 4);
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.08.2020, 02:07
Ответы с готовыми решениями:

оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ
оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее...

нужно чтобы функция располагалась до ее вызова, после ее вызова и в другом файле. Как это сделать?
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int n, *c; void fun(int a, int b) { for (int i = 0; i &lt;...

Как подменить определение функции после первого вызова без использования if и функторов
в разных модулях есть 2 синглетона, которым нужны ссылки друг на друга, один из них есстественно не сможет получить ссылку в момент...

7
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
13.08.2020, 02:09
Вызывать оператор delete[]. Но лучше использовать средства, предоставляемые C++ - std::string.
0
0 / 0 / 0
Регистрация: 28.04.2020
Сообщений: 33
13.08.2020, 02:12  [ТС]
Цитата Сообщение от Nishen Посмотреть сообщение
Вызывать оператор delete[]. Но лучше использовать средства, предоставляемые C++ - std::string.
Про это я знаю, я имел в виду где вызывать этот оператор delete[]
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,193
13.08.2020, 02:17
Цитата Сообщение от novichok875 Посмотреть сообщение
где вызывать этот оператор delete[]
Это вам виднее - где вам уже не нужна ваша строка. Однако для того, чтобы делать delete[] нужно сохранять указатель, для которого вы будете делать delete[]. А вы его не сохраняете.

C++
1
2
3
const char *str = maxn(ch, 4);
cout << str <<endl;
delete[] str;
Однако в функции у вас написана ерунда: вы выделили память с размером первой строки (strlen(arr[0]) + 1). Почему вы решили, что в эту память поместится любая другая строка? В вызове

C++
1
strcpy_s(str, strlen(arr[i])+1, arr[i]);
вы врете функции strcpy_s что памяти якобы достаточно. А ее недостаточно. Так что работать это не будет.
0
13.08.2020, 09:03

Не по теме:


Здравствуйте! А вот если в функции выделить память вот так:

C++
1
2
    string * str = new string;//Думаю это дико выглядит
    *str = "C++";
то надо очищать память или string сам все сделает?

0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
13.08.2020, 09:34
ram876, надо. Объект, на который оказывает str, нигде не удаляется.
1
Заблокирован
13.08.2020, 10:50
Вообще отпускать динамически выделенные объекты в "вольное плаванье" очень плохая затея (с личного опыта).
Очень хорошо что в с++ есть ООП и умные указатели.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.08.2020, 15:13
del
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2020, 15:13
Помогаю со студенческими работами здесь

Как правильно реализовать базу данных
Пишу дипломную работу и я застрял на одном месте. Мне нужно создать сайт где студенты просле оканчания сессии выставляют свои оценки. И...

Конструктор данных, как правильно реализовать?
Добрый день уважаемые! Думаю, многие из нас знают, что такое CMS и встречались с таким понятием, как &quot;конструктор контента&quot;....

Как реализовать удаление найденных данных ?
Программа обеспечивает работу больницы. В программе присутствует добавление,просмотр записей,отдельные удаление и поиск записей. ...

Обновление данных в таблице, как правильно реализовать?
Добрый день! Есть таблица, в скриншоте приложил Добавляются данные так: $query = &quot;INSERT INTO purchases VALUES ...

Многоточие после вызова функции
Приветствую зашедших - возможно кто-нибудь подскажет, что означает/делает многоточие в конце строки, после вызова функции take_argument :...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru