-1
나는 TI 칩에서 실행하는 코드를 작성하고 내 코드는 다음 코드 그것은 정말 문제 UART_read이 무엇을 나던동적 할당 stucks
UChar* message;
UChar* tempMessage;
message = malloc(bytesOfMessage * sizeof(UChar));
int i = 0;
while(true)
{
int rxBytes = UART_read(handle, rxBuf, 1);
//System_printf("%d \n", rxBuf[0]);
if(rxBuf[0] != 13)
{
message[i] = rxBuf[0];
i++;
int l = 1;
if(i == bytesOfMessage)
{
System_printf("first Message: \n");
for(l=0;l<bytesOfMessage;l++)
{
//System_printf("%c",message[l]);
}
System_printf("End of first Message\n");
bytesOfMessage += 10;
//message = realloc(message, bytesOfMessage * sizeof(UChar));
tempMessage = (UChar*)realloc(message, bytesOfMessage * sizeof(UChar));
message = tempMessage;
tempMessage = NULL;
System_printf("Message2 %d: \n", bytesOfMessage);
for(l=0;l<bytesOfMessage;l++)
{
//System_printf("%c", message[l]);
}
System_printf("End of second Message\n");
}
UART_write(handle, rxBuf, rxBytes);
}
else
{
rxBuf[0] = '\r';
rxBuf[1] = '\n';
rxBuf[2] = 'n';
rxBuf[3] = 'e';
rxBuf[4] = 'w';
UART_write(handle, rxBuf, 5);
}
}
동안 갇혀됩니다.
하지만 중요한 것은 realloc 기능입니다.
처음으로 코드에 도달하면 정상적으로 작동합니다. 하지만 두 번째로 막 붙어 있습니다. 문제가 칩 또는 운영 체제에있는 정상적인 코드입니까?
malloc & co. ....... – LPs
어쨌든'tempMessage'의 이유는'message (메시지)'를 덮어 쓰기 전에'if (tempMessage! = NULL)'을 검사하는 것입니다 ... – LPs
현명한 사람에게 Word는' alloc' 호출. 또한, 'realloc'의 결과를 테스트하지 않는다면 임시 변수에 아무런 포인트가 없습니다. – KevinDTimm