工具与软件:
当缓冲区位于地址0x0004'9C40时、以下代码是否会根据需要写入 m_logBuffer、或者它是否也会写入到其他地方(如0x0000'9C40)?
当我写入该缓冲区时、我的系统会崩溃、但不会立即崩溃。 调试程序显示正在将正确的内容写入缓冲区、但我不确定、因为如果我注释掉 vsnprintf 调用、系统不会崩溃。
下面是一个折叠版本的代码--我没有显示 printf()函数的 va_list 和 va_start 宏。
#pragma DATA_SECTION ("ExtPgm3")
char m_logBuffer[1024]={ 0 };
char * put_ptr = m_logBuffer;
int bytesAvail = sizeof (m_logBuffer)-(put_ptr - m_logBuffer);
int bytesPrinted = vsnprintf (put_ptr、bytesAvail、fmt、args);
put_ptr +=(字节打印>字节 Avail)? bytesAvail : bytesPrinted;
存储器配置 文件夹 原点长度 全波整流 未使用属性填充 (字节)(字节)(字节)(字节) ----- --- --- --- --- --- MMR 00000000 000000c0 00000000 000000c0 RWIX VECT 00000200 00000100 00000100 00000000 RWIX DARAM 00000400 0000cc00 0000caee 00000112 RWINX DMABuffers 0000d000 00003000 00002acc 00000534 Rwix ExtPgm 00010000 00040000 0002d490 00012b70 RWIX ExtMgm1. 00050000 00010000 0000bdce 00004232 RWIX ExtPgm2 00060000 00020000 00020000 00000000 RWIX ExtMgm3. 00080000 00020000 00014088 0000bf78 RWIX NCISFrameBuf 000a0000 00020000 00000000 00020000 RWIX