Цитата(andrewlekar @ Dec 17 2013, 14:03)
Однако куча может фрагментироваться и нужно закладывать раза в 2 больше памяти, чем вычислили. Короче, муторное это занятие.
Почему именно в 2, а не больше?
А если в процессе работы программы была такая последовательность:
выделить 100байт, указатель A;
выделить 1байт, указатель B1;
освободить указатель A;
выделить 101байт, указатель A;
выделить 1байт, указатель B2;
освободить указатель A;
... ну и так далее, с увеличением запросов A и без освобождения указателей B.
Что будет после N таких проходов?
Занято (допустим при N=10) в конце будет всего: 1*10+109 байт.
А кучи израсходовано будет: 1*10+100*10+9.
Итого - куча нужна почти в 10 раз больше, чем максимальный полезно-занятый объём.
PS: Именно поэтому я никогда не использую кучу в своих embedded-проектах.