powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / кажется я начинаю понимать...
15 сообщений из 15, страница 1 из 1
кажется я начинаю понимать...
    #34927822
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...почему стало так много глючных и тормознутых прог, а юзеров превратили в бесплатных бета-тестеров !
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34927899
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и? поделись, что-ли, наблюдением ))
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34927905
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychи? поделись, что-ли, наблюдением ))
пропустил ссылку? - см. !
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34927993
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ксакеп - журнал для детей.
как сказал бы Гоблин - для тупых подростков.

А дети не пишут софт, так что конкретно эта статья никакого вреда
индустрии не принесет :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928065
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, когда сказать нечего лучше промолчать.... Это я об авторе сего опуса....
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928200
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum пишет:

Много не читал, прочел только про выделение памяти.
Ну чего -- в общем правильно все, не фиг память проверять -
это просто мертвый код. Он все равно ничего не сможет сделать,
потому что нету возможности управлять менеджером памяти,
рестартов в С нет, а такие средства как SEH предусматривают
наличие альтернативных потоков управления (вот там уже рестарты
есть).

Могу даже сказать, что в продукте, над которым я сейчас работаю,
именно так и делается - при недостатке памяти внутри аллокатора
просто вызывается код, генерирующий защиту памяти (такой ASSERT
времени выполнения). Просто потому что если памяти нет, ее взять
не откуда, и делать тут нечего.

Продукт - СУБД, т.е. код ентерпрайзнее некуда. Так что не знаю как
там на счет детей.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928228
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum пишет:
> ...почему стало так много глючных и тормознутых прог, а юзеров
> превратили в бесплатных бета-тестеров !

Прочитал все. Абсолютно согласен с автором.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928499
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Cerebrum пишет:
> ...почему стало так много глючных и тормознутых прог, а юзеров
> превратили в бесплатных бета-тестеров !

Прочитал все. Абсолютно согласен с автором.
Posted via ActualForum NNTP Server 1.4меня, к примеру, тоже не особенно эта статья напугала... хотя, конечно, освобождать всё-же надо ))
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928631
Фотография cap83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где Читать ?????
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928638
Фотография cap83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тфу блин '!' синий !
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34928998
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv wrote:
>
> Cerebrum пишет:
>
> Много не читал, прочел только про выделение памяти.
> Ну чего -- в общем правильно все, не фиг память проверять -
> это просто мертвый код. Он все равно ничего не сможет сделать,

Истина, как обычно - где-то посредине. На мой взгляд, автор правильно
написал - нужно учесть все риски. Отсутствие проверки успешности
выделения памяти все-таки достаточно необычное явление и дрожно быть
обосновано. Например, если при работе на Desktop/server WinXP/Linux
кончилась память, то это обозначает одно из двух - или запросы слишком
велики (как вариант - глюк с неправильным вычислением размера памяти, с
чем все-таки иногда можно бороться), или вешалка наступила еще полчаса
назад, и система давно и надежно лежит в свопе. Так, что если вы
уверены, что ваш код никогда не выйдет за рамки таких условий - то да,
можно не проверять результат выделения памяти. Если нет - то проще
сделать это сразу, чем потом ломать голову, перенося фрагмент кода под
какой-нибудь ARM с тем-же Linuх без свопа, но с buddy аллокатором.

Что касается IsBadReadPtr, согласен - это явно излишне. Проверка на NULL
- тоже по обстоятельствам. Например в функции являющейся частью
интерфейса подсистемы - проверю обязательно, внутри подсистемы
расставляю всевозможные ASSERT и VERIFY.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34929482
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПродукт - СУБД, т.е. код ентерпрайзнее некуда.Вот в mysql если для выполнения запроса требуется памяти больше, чем определено настройками, он возвращает "Not enough memory" и продолжает работать.

Насчёт проверки параметров, хе-хе, в винапи на этот счёт дырку нашёл. В одну и ту же функцию иногда можно нулл передавать, иногда нельзя.
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34930126
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teras пишет:

> Истина, как обычно - где-то посредине. На мой взгляд, автор правильно
> написал - нужно учесть все риски. Отсутствие проверки успешности
> выделения памяти все-таки достаточно необычное явление и дрожно быть
> обосновано.

Наоборот, очень частое.
На C++ при неудачном выделении памяти выбрасывается исключение.
Так что проверять не надо ничего - надо исключения обрабатывать.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34930221
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv wrote:
> teras пишет:
>
>> Истина, как обычно - где-то посредине. На мой взгляд, автор правильно
>> написал - нужно учесть все риски. Отсутствие проверки успешности
>> выделения памяти все-таки достаточно необычное явление и должно быть
>> обосновано.
>
> Наоборот, очень частое.
> На C++ при неудачном выделении памяти выбрасывается исключение.
> Так что проверять не надо ничего - надо исключения обрабатывать.
>

Это немного из другой оперы - (исключение/возврат признака ошибки) это
разные подходы к обработке ошибок, но в C++ проверка отсутствия памяти
все равно *есть*, и находится она в самом new, и эту ситуацию всегда
можно обработать в вызывающей функции. Образно говоря, эти подходы
выглядит так:

Код: plaintext
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.
/* 1) Типичный поход в C: переносимый код, для любых машин */
char * mystrdup(const char * str)
{
	char * ptr = malloc(strlen(str)+ 1 );
	if (ptr == NULL)
		return NULL;
	strcpy(ptr, str);
	return ptr;
}

/* 2) подход C++: как правило работает, для любых машин */
char * mystrdup(const char * str)
{
	char * ptr = malloc(strlen(str)+ 1 );
	if (ptr == NULL)
		throw (std::bad_alloc());
	strcpy(ptr, str);
	return ptr;
}

/* 3) Вы упомянули про код такого рода: подход для машин с кучей
 * памяти
 */
char * mystrdup(const char * str)
{
	char * ptr = malloc(strlen(str)+ 1 );
	if (ptr == NULL)
		panic("out of mem");
	strcpy(ptr, str);
	return ptr;
}

/*  4) А в статье упоминается такой код: подход для машин с
 * кучей памяти и обязательной защитой.
 */
char * mystrdup(const char * str)
{
	char * ptr = malloc(strlen(str)+ 1 );
	strcpy(ptr, str);
	return ptr;
}

(3) и (4) практически эквивалентны, разве что сообщение в (3) более внятное.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
кажется я начинаю понимать...
    #34930358
grieg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv

На C++ при неудачном выделении памяти выбрасывается исключение.
Так что проверять не надо ничего - надо исключения обрабатывать.


При этом механизм виртуальной памяти часто (в ядре Линуксе -- по умолчанию, афаик) устроен так, что реальное выделение памяти происходит при обращении к ней, а не при команде выделения. То есть успешное выделение не гарантирует, что память действительно выделена.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / кажется я начинаю понимать...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]