Size: a a a

2020 December 21

W

Wild_Wind in Embedded Group
shadowsoul
ну как же, имитация бурной деятельности)
Да не. Прост привык.
источник

AJ

Arm Jedi in Embedded Group
Парни а чего в keil на free(buf) вываливается в hardfault...?
источник

LZ

Leonid Zaliubovskii in Embedded Group
Arm Jedi
Парни а чего в keil на free(buf) вываливается в hardfault...?
потому что меркурий в ретрограде
источник

LZ

Leonid Zaliubovskii in Embedded Group
пока что можем только так ответить. В связи с концом 2020 все ванги испытывают некоторые трудности с подключением к ноосфере😁
источник

LZ

Leonid Zaliubovskii in Embedded Group
А если серьезно, нужно больше подробностей... Это же не дело, так задавать вопрос
источник

LZ

Leonid Zaliubovskii in Embedded Group
уважай соседей по чату и их время :)

Что за процессор, ядро? что с переменной, не нулевая ли она
источник

L

LexsZero in Embedded Group
Leonid Zaliubovskii
пока что можем только так ответить. В связи с концом 2020 все ванги испытывают некоторые трудности с подключением к ноосфере😁
источник

LZ

Leonid Zaliubovskii in Embedded Group
да да, знаю. Сайт годный
источник

AJ

Arm Jedi in Embedded Group
Leonid Zaliubovskii
уважай соседей по чату и их время :)

Что за процессор, ядро? что с переменной, не нулевая ли она
5 мин. Отпишусь с подробностями. Stm32f103rb проц
источник

AJ

Arm Jedi in Embedded Group
void set_alias(uint8_t * uri)
{
 char *buf;
 uint8_t pin;
 
 buf=malloc(20);
 buf=(char*)get_http_param_value((char *)uri,"pin");
 pin=atoi(buf);
 
 buf=(char*)get_http_param_value((char *)uri,"val");
 memset(&flash_settings.id_channel[pin-1][0],0x00, sizeof(flash_settings.id_channel[pin]));
 memcpy(&flash_settings.id_channel[pin-1][0],buf,strlen(buf));
 flash_updated=1;
 
 
 #ifdef _WEB_DEBUG_
 printf("pin: %d , name: %s\r\n",pin,buf);
 #endif
 
 free(buf);
 
 
 
 
}
источник

AJ

Arm Jedi in Embedded Group
вот на последнем free сваливаются в hardfaulthandler
источник

AJ

Arm Jedi in Embedded Group
данные корректно разбирает но вот на free виснет
источник

A

Alexander in Embedded Group
Arm Jedi
данные корректно разбирает но вот на free виснет
А &buf[0] тоже виснуть будет?
источник

T

Thorn in Embedded Group
Arm Jedi
void set_alias(uint8_t * uri)
{
 char *buf;
 uint8_t pin;
 
 buf=malloc(20);
 buf=(char*)get_http_param_value((char *)uri,"pin");
 pin=atoi(buf);
 
 buf=(char*)get_http_param_value((char *)uri,"val");
 memset(&flash_settings.id_channel[pin-1][0],0x00, sizeof(flash_settings.id_channel[pin]));
 memcpy(&flash_settings.id_channel[pin-1][0],buf,strlen(buf));
 flash_updated=1;
 
 
 #ifdef _WEB_DEBUG_
 printf("pin: %d , name: %s\r\n",pin,buf);
 #endif
 
 free(buf);
 
 
 
 
}
вы программируете методом копипаста? сразу после malloc() переменной buf присваивается совсем другое значение. на следующей же строчке. malloc() и free() там скорее всего из другого примера
источник

A

Alexander in Embedded Group
Ну и да, buf переопределяется.
источник

AJ

Arm Jedi in Embedded Group
Thorn
вы программируете методом копипаста? сразу после malloc() переменной buf присваивается совсем другое значение. на следующей же строчке. malloc() и free() там скорее всего из другого примера
Все понял где я дурак -). Спасибо
источник

AJ

Arm Jedi in Embedded Group
Потому что убрав malloc и free заработало корректно. Просто хотел разобраться для себя чего так
источник

T

Thorn in Embedded Group
Arm Jedi
Потому что убрав malloc и free заработало корректно. Просто хотел разобраться для себя чего так
— вы попросили 20 байт из кучи, malloc() вернул указатель на выделенную память
— вы тут же затерли этот указатель другим
...
— пытаетесь вернуть в кучу блок памяти по совершенно левому указателю, который не соответствует, надо полагать, вообще никакому динамически выделенному блоку памяти. free() закономерно падает
— ну и на десерт — выделенные в начале 20 байт утекли в никуда
источник

AJ

Arm Jedi in Embedded Group
Thorn
— вы попросили 20 байт из кучи, malloc() вернул указатель на выделенную память
— вы тут же затерли этот указатель другим
...
— пытаетесь вернуть в кучу блок памяти по совершенно левому указателю, который не соответствует, надо полагать, вообще никакому динамически выделенному блоку памяти. free() закономерно падает
— ну и на десерт — выделенные в начале 20 байт утекли в никуда
Спасибо большое. Да я уже понял. Выделил память потом переопределил и пытался вернуть. Таки не меркурий-). Указатель переопределился на область одной глобальной переменной.
источник

AJ

Arm Jedi in Embedded Group
Ещё подскажите функция strtok. Так не могу толком понять как она работает. У неё какие-то статические переменные в теле которые обновляют указатели? Если кто сталкивался с strtok. Или подскажите удобную либу работы со строками
источник