Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 08.08.2007
Сообщений: 184

текст на С++ из двух строчек

31.01.2008, 05:45. Показов 3576. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ниже текст на С++ из двух строчек.
Есть ли здесь какая-то ошибка или нет. Если есть, то где и к чему она может привести ?
C++
1
2
int *p=new int[10];
delete p;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2008, 05:45
Ответы с готовыми решениями:

Как сравнить текст двух строчек?
У меня содержится текст в лабеле, как можно сравнить текс лабела с другим текстом, тоесть(в лабеле написано слово - Самокат, если этот...

Сравнение двух строчек
Нужно сравнить 2 строчки. Использую == и ничего не работает. Как по-другому устранить эту проблему. struct book { char name; int...

Создать структуру из двух строчек и IndexOutOfRangeException
Написал вот такую программу. Сначала вводятся данные первой строки а затем должны вводится данные второй строки, но выходит вот такая...

22
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
31.01.2008, 15:16
Ошибка однозначно есть и может привести к неправильному освобождению занятой памяти, хотя конечно это зависит от того как релизованы функции распределения памяти в том или ином компиляторе.
По-моему, правильнее было бы зделать так:
C++
1
2
int *p = new int[10];
delete[] p;
С уважением, Владимир
0
0 / 0 / 0
Регистрация: 08.08.2007
Сообщений: 184
01.02.2008, 05:07  [ТС]
Спасибо, Владимир.
Кто еще хочет высказаться?
:-)
0
0 / 0 / 0
Регистрация: 01.02.2008
Сообщений: 61
01.02.2008, 06:56
Все верно написано, НО
А что, если память не выделится????

Что тогда будет освобождать delete????

Всегда нужно ОБРАБАТЫВАТЬ возможные ошибки
хотябы так
C++
1
2
3
4
int* p=NULL;
     p = new int[10];
     if(p)
        delete p, p=NULL;
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
01.02.2008, 07:29
Привет !

>Ниже текст на С++ из двух строчек.
>Есть ли здесь какая-то ошибка или нет. Если есть, то где и к чему
>она может привести ?

>int *p=new int[10];
>delete p;
На самом деле здесь может быть куча ошибок, кода который идёт ранее никто не видел и не знает, что вытворяли некие программеры там.
если же сделать так :
C++
1
2
3
4
5
main()
{
   int *p=new int[10];
   delete p;
}
и запихать его в отдельный файл и откомпилить только его,
то я пожалуй соглашусь с boombastik, хотя это и не ошибка, а скорее просто утечка памяти, причём несущественная по современным масштабам.

До чего дожили - на форумах стали задачки давать ..., С Уважением Andir!
0
1 / 1 / 5
Регистрация: 30.04.2007
Сообщений: 225
01.02.2008, 17:01
> Всегда нужно ОБРАБАТЫВАТЬ возможные ошибки

вызывать оператор delete для нулевого указателя по стандарту допустимо.
0
0 / 0 / 0
Регистрация: 01.02.2008
Сообщений: 61
02.02.2008, 01:41
Допустимо, но ОШИБКУ ОБРАБОТАТЬ надо
надо сам факт ее существования ОПРЕДЕЛИТЬ
На это и был акцент
потому и IF стоит
0
SCORPION
03.02.2008, 04:48
Вообще то ,желательно написать так -
C++
1
2
3
 char * St = NULL; 
 St = new char[10];
 delete [] St;
Здеся все нормально ,
если так как вы говорили
C++
1
2
 char *St = new char[10];
 delete St;
просто будет удален из памати перый эл-т массива
остальные 9 остануться не высвобожленные в памяти ,
хотя это все будет работать .......
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
03.02.2008, 11:56
По поводу обработки ошибок, да и удаления массивов...
Парни!!! Вам что слабо Страуструпа взять!?
Вот цитата из его книги, уверен всем присутствующим известной:
'...Что случится, когда операция new не сможет больше найти свободной памяти для размещения? Поскольку даже виртуальная память небесконечна, такое время от времени происходит. Так, запрос вида:
char* p = new char [100000000];
обычно не проходит нормально. Когда операция new не может выполнить запрос, она вызывает функцию, которая была задана как параметр при обращении к функции set_new_handler() из <new.h>. Например, в следующей программе:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
#include <new.h>
#include <stdlib.h>
 
void out_of_store()
{
    cerr << 'operator new failed: out of store
';
    exit(1);
}
int main()
{
    set_new_handler(&out_of_store);
    char* p = new char[100000000];
    cout << 'done, p = ' << long(p) << '
'
}
скорее всего, будет напечатано не 'done', а сообщение:
operator new failed: out of store
// операция new не прошла: нет памяти'

Счастья вам! Владимир.
0
Ghost
14.02.2008, 15:19
А что, Smart-указатели уже законодательно запретили???
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
14.02.2008, 15:32
Как так!? Кто такое сказал?

Но в данном случае речь шла о стандартных механизмах рыботы с памятью в C++, а не дополнительных наворотах. В этом случае зачем выбирать С++, можно остановиться на Java или C#, например... Кроме того, ни для кого не секрет, что Smart-pointer'ы это дополнительные операции, то есть если нужна скорость, то лучше бы от них отказаться.

Хотя кому в наше время нужна скорость!? Когда Билли уже публично признался, что так как Hardware постоянно совершенствуется и продолжит это в тех же темпах, то нам наплевать на производительнось, мы будем больше внимания уделять пользовательскому интерфейсу...

С уважением, Владимир
0
Ghost
14.02.2008, 16:40
гы-гы! Ели нужна скорость - то вспоминаем про ассемблер )
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
14.02.2008, 16:49
Конечно! Используется вставочка asm, но тогда тема и содержание самого вопроса становятся бессмысленными...

С уважением, Владимир
0
Ghost
14.02.2008, 23:58
Да, и тогда (если нужна скорость) можно подумать и о своем манагере памати, да и ОСь свою тоже можно наваять )))))
У меня, кстати, уже есть СВОЯ мультизадачная ОСь, 100 процессов под ней на DX/2-80 просто порхали.
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
17.02.2008, 11:22
Круто!

Я еще не дорос до своих ОС...
И что выделение памяти в твоей ОС быстрее чем в других? Хотя наверно да, ведь под Windows этим занимается диспетчер памяти: выделяет, приписывает к определенному процессу, работает с файлом подкачки,... все это конечно оптимизировано, но все равно жрет машинное время...

С уважением, Владимир.

P.S. Мы уже в полнейший оффтопик залезли... хорошо у этого форума нет модератора
0
Snork
17.02.2008, 18:50
Доброго времени суток!

И охота, вам, господа, оси свои писать? Я свою энергию направляю в мирное русло К тому ж, Билли прав, ось не столько кол-во процессов и их скорость, сколько ГУИ. Впрочем, не мое это и дело. Я лишь хотел добавить к топику, что очень удобны исключения. Вы-то это и так знаете, но мало ли кто этот топик поднимет?

Итак, у меня штук 10 стековых, нуллом проинициализированных, указателей. Они представляют собой буферы для функции-транзакции. Если все 10 заполнятся как надо, то по их членам-аналогам данные грохаются, с последующим присваиванием в них этих самых буферов. (Коряво, конечно, в смысле фрагментации, но мне это не сильно надо). После каждой ошибки (транзакция должна быть атомарна) осуществляется выход с кодом ошибки. Страшно подумать, что надо проверять на NULL каждый буфер после new - там каждый буфер по ходу дела поднимается и грохается раза 3, в среднем! (это 30 одинаковых проверок каждого буфера и 10 удалений, если хоть раз память не выделилась - кошмар!). Но catch(...) спасает дело - здесь я единожды проверяю все буфера на NULL и грохаю, если надо. Мне нравится))
Ghost
18.02.2008, 22:42
1. Позволю себе не согласиться с высказыванием, что ОСь - это ГУЙ.
В случае, если мы рассматриваем ОСь для секретутки - это ТОЛЬКО ГУЙ и чуть-чуть надежности, а если это ось (к примеру) для телефонной станции? Вопросы?
2. По поводу catch(...) - классная штука, не спорю. Вот только в BC++ 3.1 его нет ((
Snork
19.02.2008, 08:38
Вопросы есть. 'Секретутки' (а к ним я причисляю очень многие категории людей: дизайнеры, верстальщики, операторы набора и т.п.) двигают рынок. Очень может быть, что успех оси на телефонной станции будет зависеть от того, как эту осю встретят 'секретутки'. (На этом позвольте вместо 'секретутка' говорить привычное 'пользователь'.) Так вот, если эта куча байт, которая нужна на телефонной станции, служит для единственной узкоспециальной задачи - говорить об оси рано, это просто BIOS какой-то! Тут и контроллера хватит. А если же предполагается под эту ось писать свои приложения, которые потом заменяются со временем и т.п. - 10:1, что выберут Unix или WinNT, в крайнем случае, отрежут у них тот самый ГУЙ. Просто потому, что эти оси, благодаря ГУЙям, очень раскрутились. А раскрутили их пользователи.

Всего наилучшего, Снорк.
0 / 0 / 0
Регистрация: 15.03.2007
Сообщений: 40
20.02.2008, 00:53
The first of all, the standard behavior of new (in VC and as I remember in BCPP Builder) is to return NULL on error in new. You can REDEFINE that standard behavior by set up of new handler with _set_new_handler function.
0
Snork
20.02.2008, 13:57
In details, please. BCPPB is out of my interests, but if VC++ supports these features, I'd like to know how to use it. (Is it ANSI standard?)

Snork.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2008, 13:57
Помогаю со студенческими работами здесь

Некорректно работает батник из двух строчек
Написал батник а он вот это пишет(( Если без echo писать то просит подтверждения, а надо чтобы он автоматом все сам делал. Подскажите что...

Сравнение первых строчек двух мемо в С++
Нужно сравнить первые строчки двух Мемо, Мемо1 и Мемо2. В первом уже написано что-то, а во втором владелец программы должен сам написать,...

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

Как сделать текст в RadioGroup на несколько строчек?
Как сделать текст в RadioGroup на несколько строчек, чтобы не было вот такого

Поменять местами предпоследние слова двух строчек
Дано 2 строчки. Нужно заменить предпоследнее слово первой строчки на предпоследнее слово второй строчки, и наоборот. И желательно опишите...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru