本次在实际测试情况下,发现程序无缘无故的异常,导致看门狗超时复位,经过排查是malloc函数分配失败的时候,依然对指针进行了操作,导致异常。以前没重视这个问题是因为,总觉的malloc基本都会成功的,假如循环调用一个函数logOutput,里面有malloc和free,那么下次调用logOutput分配相同的空间应该也是成功的(实际上非我所愿)。问题函数如下,必须对pBuffer没有分配成功做处理,否则很容易出问题。

static inline void logOutput(uint32_t level, const char *tag, const char* format, ...)
{
va_list va;
int len, len2,space;
char* pBuffer;
pBuffer = (char*)malloc(512);
/*space "\n\0"*/
if(pBuffer == NULL)
return;
space = gLogBufferLength - ;
len = utils_snprintf(pBuffer, LOG_PREFIX_SIZE_MAX, "#%s,%d:", tag,level);
utils_snprintf( pBuffer, LOG_PREFIX_SIZE_MAX, "#%s,%d:", tag,level);
space -= len;
va_start(va, format);
len2 = utils_vsnprintf( pBuffer+len, space ,format, va);
va_end(va);
len += (len2>?len2:space); if(len < gLogBufferLength - ){
pBuffer[len] = '\n';
pBuffer[len+] = '\0';
}else{
pBuffer[gLogBufferLength - ] = '.';
pBuffer[gLogBufferLength - ] = '.';
pBuffer[gLogBufferLength - ] = '?';
pBuffer[gLogBufferLength - ] = '\n';
pBuffer[gLogBufferLength - ] = '\0';
} logwrite((uint8_t*)pBuffer,utils_strlen(pBuffer));
free(pBuffer);
};

最新文章

  1. curl 发送get post请求
  2. ORA-00257归档日志写满的解决方法
  3. tmpfs
  4. 客官,您的 Flask 全家桶请收好
  5. Redis缓存项目应用架构设计一
  6. 使用phpExcel导出excel时,报500错
  7. ATS 分级缓存
  8. 【题解】UVA11362 Phone List
  9. C#2.0 委托
  10. HTML的块级元素和行内元素
  11. drf框架之跨域问题的解决与缓存问题
  12. H5 video播放视频遇到的问题
  13. 洛谷P1462通往奥格瑞玛的道路题解
  14. 已知两点的经度和纬度,计算两点间的距离(php,javascript)
  15. xshell 评估过期
  16. IPython:一种交互式计算和开发环境
  17. poj3349 Snowflake Snow Snowflakes【HASH】
  18. blogCMS整理
  19. C语言抽象数据类型ADT
  20. Do not set &quot;root&quot; as &quot;NOPASSWD&quot; in sudoers file

热门文章

  1. 泛型约束-swift
  2. Uva 10534 波浪子序列
  3. 2018.12.16 struts.xml 结果集方式分析 &amp;&amp; 源码查看
  4. spring boot应用启动原理分析
  5. Android学习笔记_21_ViewFlipper使用详解 手势识别器
  6. 01_常用 Linux 命令的基本使用
  7. 数据库——MySQL——存储引擎
  8. 《深入理解Spring Cloud与微服务构建》书籍目录
  9. iOS | XIB简单应用和注意点
  10. 你不知道的javaScript笔记(1)