- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
char parser_msg(char *data, char size)
{
//<...>
QByteArray bt;
//<...>
x=(char *) malloc(size);
bt.clear();
for (i=0; i<size; i++) {
x[i]=*data;
bt.append(*data);
*data++;
}
printf("Data parser! >> '%s'\n", bt.toHex().constData());
if (x[0]==0x06) {
//<...>
}
if (x[0]==...) {
//<...>
}
//<...>
}
Разбор команд из COM-порта. Используется Qt. QByteArray, кстати, заведен здесь только ради дебаг-принта.
При вызове функции в кач. data передается указатель, возвращаемый data() другого байтаррэя, живущего на стеке.
Анонимус 26.11.2014 23:17 # 0
ealx 26.11.2014 23:22 # 0
В общем, там что-то с потоками еще наворочено.
ealx 26.11.2014 23:33 # 0
Анонимус 27.11.2014 01:37 # 0
но код и правда странный)
bormand 27.11.2014 06:45 # 0
roman-kashitsyn 27.11.2014 08:47 # 0
Борманд уже сказал, конечно, но вообще странно ожидать порчи адреса локальной переменной до выхода из функции.
Управляемые языка избаловали людей.
Анонимус 27.11.2014 11:55 # +2