|
sprintf |
|
|
|
 |
Ответов
|
Jun 16 2010, 00:04
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(ReAl @ Apr 17 2010, 14:14)  На стеке выделялся только буфер для преобразований целых чисел, а для плавающих форматов буфер длиннее и его по malloc выделяли. Вначале писали извращенцы, асболютно не представляющие что такое МК. Потом за дело взялись нормальные люди и сделали правильно. Я все никак не могу взять в толк почему некоторые делают маленький стек, и большой heap, а потом в коде начинают появляться воистину дебильные и тормозные конструции типа: Код foo() { U8 *buf = (U8 *)malloc(256); /* malloc при поиске подходящего блока проходит километровую цепочку heap descriptor'ов. процесс прохода дескрипторов необходимо защитить локом либо другим sync примитивом, для обеспечения атомарности доступа, а значит прерывания могут быть запрещены на ОЧЕНЬ ДОЛГО. */ ...
free( buf ); /* проходит через процесс объединения текущего блока со свободными, хоть этот процесс и быстрее чем выделение, но всяко медленнее чем одна команда "SUB SP, 256" в этом процессе требуется обеспечить атомарность при обращении к heap дескрипторам, а значит прерывания и здесь могут быть запрещены на относительно длительное время */ } что мешает млин heap уменьшить на 256 байт, а стек на те же 256 байт увеличить? Чтобы было просто Код foo() { buf[ 256 ]; // память выделена мгновенно
// и освобождена автоматически }
|
|
|
|
|
Jun 16 2010, 03:12
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(rezident @ Jun 16 2010, 03:54)  Наползание стека на данные это одна из самых трудновылавливаемых ошибок при программировании МК. Дык возникает она потому что Цитата делают маленький стек В отличие от Heap'а и его проблем фрагментации, для стека где фрагментация впринципе невозможна (по природе LIFO) - объем можно оценить еще до run-time. Помножить это число на два, и будет щастье. Если посчитать заранее тяжело - заполнение стек памяти патерном, прогон программы с последующим дампом памяти для оценки использования стека в run-time тоже никто не отменял. Много ли толку от менеджера, когда в heap нет блока требуемого объема и менеджер возвращает NULL? А "гениальный программист" привыкший, что на PC память есть всегда, даже не соизволит проверить что вернул этот malloc, и сразу начинает туда что-то писать?
|
|
|
|
Сообщений в этой теме
sergey sva sprintf Apr 15 2010, 17:37 Dog Pawlowa Цитата(sergey sva @ Apr 15 2010, 20:52) Г... Apr 15 2010, 18:04 baralgin Или нехватка стэка. Apr 15 2010, 18:05 sergey sva >ЧТо за компилятор, что за среда, какие настрой... Apr 15 2010, 18:31 sergey sva Вот что говорит на -target-help , может нужно еще ... Apr 15 2010, 21:01 Аматер У меня тоже висло все из за printf %f в keil. Пом... Apr 16 2010, 06:08 MrYuran printf() обычно имеет несколько "градаций... Apr 16 2010, 06:32 sergey sva ЦитатаХип и стек - вообще-то не одно и то же, скор... Apr 16 2010, 08:11 AHTOXA Цитата(sergey sva @ Apr 16 2010, 14:26) К... Apr 16 2010, 12:55 Сергей Борщ Цитата(sergey sva @ Apr 16 2010, 10:26) h... Apr 16 2010, 13:04  AHTOXA Цитата(Сергей Борщ @ Apr 16 2010, 19:19) ... Apr 16 2010, 15:38 sergeeff Навскидку - все правильно. Совет - на IRQ_STACK_SI... Apr 16 2010, 08:28 sergey sva ЦитатаНавскидку - все правильно. Совет - на IRQ_ST... Apr 16 2010, 08:51 AHTOXA А у вас вообще malloc() работает? Apr 16 2010, 12:05 sergey sva Странно получается не работает, а sprintf с целыми... Apr 16 2010, 12:51 sonycman В кейле для кортексов юзаю vsprintf постоянно.
Пол... Apr 16 2010, 13:16 Сергей Борщ Цитата(sonycman @ Apr 16 2010, 15:31) В к... Apr 16 2010, 13:39 smac Цитата(sergey sva @ Apr 15 2010, 21:52) Г... Apr 16 2010, 19:54 Сергей Борщ Цитата(sergey sva @ Apr 15 2010, 19:52) Г... Apr 17 2010, 15:02 sergey sva Хотел попробовать kgp но что то он у меня не идет... Apr 17 2010, 15:39 smac Цитата(sergey sva @ Apr 17 2010, 19:54) И... Apr 17 2010, 17:14 AHTOXA Цитата(sergey sva @ Apr 17 2010, 21:54) Х... Apr 17 2010, 17:46 sergeeff Я чего-то вообще не пойму в сыр-бор. Исходников sp... Apr 17 2010, 22:39 sergey sva >Хм. Из-за одной небольшой проблемы сразу менят... Apr 18 2010, 15:09 sergeeff Цитата(sergey sva @ Apr 18 2010, 18:24) Н... Apr 18 2010, 16:04 sergey sva Спасибо, теперь работает float и строки и целые ч... Apr 18 2010, 20:27 MrYuran Цитата(sergey sva @ Apr 19 2010, 00:27) С... Jun 17 2010, 05:38 _Макс Как указать вывод float с предшествующими пробелам... Jun 15 2010, 22:41 rezident defunct, было бы хорошо, если все было бы так прос... Jun 16 2010, 19:54 defunct Цитата(rezident @ Jun 16 2010, 22:54) def... Jun 16 2010, 23:19 skripach IAR float32 без проблем. Jun 17 2010, 07:01 fox1 Добрый день ! Кто нибудь использует sprintf с ... Jul 7 2010, 12:00 demiurg_spb Включите в makefile поддержку расширенной printf.
... Jul 7 2010, 14:24  fox1 Цитата(demiurg_spb @ Jul 7 2010, 18:24) В... Jul 8 2010, 04:49   demiurg_spb Понятно.
Тогда поищите по форуму.
Недавно тут кто-... Jul 8 2010, 08:47    Wano Малость не в тему. Смотрю человек работает с текст... Jul 9 2010, 08:32 fox1 Ну вобщем ... взломался printf с float от IARа ...... Jul 22 2010, 12:13 koluna Столкнулся с определенными проблемами, используя ... Jan 2 2014, 07:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|