Для elide:
я просто хотел показать, почему
char *a="Hello"; - константная строка
char a[]="Hello"; - нормальная модифицируемая строка
имхо вариант с глобальными переменными удачнее (более идеологически чистый что-ли), потому как разница только в том, что одна попадает в ro память, а другая в rw. потому и написал именно его. вдобавок ко всему прочему, это косвенно объясняет, причем тут -fwritable-strings (правда я это осознал только сейчас).
допускаю, что заблуждаюсь, поэтому можно по-подробней, почему не слишком очевиден.
Для alphex_kaanoken:
а если бы не хамили откровенно, то и извиняться было бы не за что. и вы бы не выглядели идиотом в глазах остальных форумчан. цитирую вас же:
Вы же господин не зная уровень оппонента начинаете его неоправданно унижать - ну и кто из нас идиот? Сначала будьте готовы к ответу - а потом отвечайте мой вам совет.
рекомендую пересмотреть формат вашего общения. и это касается не только этого треда.
да. и скушайте молочного шоколада nestle. "нежнее, виктор, еще нежнее"(С)
nercus добавил в
15.04.2005 02:22
Для alphex_kaanoken:
>почему при возврате не NULL ты можешь запросто получить segfault
это?
Код: Выделить всё
#man malloc
...
BUGS
By default, Linux follows an optimistic memory allocation strategy.
This means that when malloc() returns non-NULL there is no guarantee
that the memory really is available. This is a really bad bug. In case
it turns out that the system is out of memory, one or more processes
will be killed by the infamous OOM killer. In case Linux is employed
under circumstances where it would be less desirable to suddenly lose
some randomly picked processes, and moreover the kernel version is suf-
ficiently recent, one can switch off this overcommitting behavior using
a command like
# echo 2 > /proc/sys/vm/overcommit_memory
See also the kernel Documentation directory, files vm/overcommit-
accounting and sysctl/vm.txt.