-1
私は、TIのチップで実行するコードを書いていますし、私のコードは、それは本当に問題でUART_readが何をdoesntの次のコード動的割り当て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機能です。
初めてこのコードにアクセスすると問題なく動作します。 しかし、それはちょうど立ち往生する2回目。 正常に動作するはずのコードで、問題はチップまたはオペレーティングシステムにありますか?
malloc&coを使用したTiチップ。 ....... – LPs
とにかく 'tempMessage'の背後にある理由は、' message(メッセージ) 'を上書きする前に' if(tempMessage!= NULL) 'をチェックすることです... – LPs
Wordは賢明に言えば、 alloc'コールを呼び出します。また、 'realloc'の結果をテストしない場合は、一時変数には何の意味もありません。 – KevinDTimm