我是靠谱客的博主 跳跃高山,最近开发中收集的这篇文章主要介绍洛谷C语言支持malloc吗,malloc函数分配失败处理的严重性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本次在实际测试情况下,发现程序无缘无故的异常,导致看门狗超时复位,经过排查是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"*/

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+] = '';

}else{

pBuffer[gLogBufferLength - ] = '.';

pBuffer[gLogBufferLength - ] = '.';

pBuffer[gLogBufferLength - ] = '?';

pBuffer[gLogBufferLength - ] = 'n';

pBuffer[gLogBufferLength - ] = '';

}

logwrite((uint8_t*)pBuffer,utils_strlen(pBuffer));

free(pBuffer);

};

malloc函数分配内存失败的常见原因

malloc()函数分配内存失败的常见原因:  1. 内存不足.  2. 在前面的程序中出现了内存的越界访问,导致malloc()分配函数所涉及的一些信息被破坏.下次再使用malloc()函数申请内存 ...

在内存充足时malloc函数分配内存失败的原因及解决

昨天在修改自己的代码的时候,碰到了malloc函数内存分配失败,上网翻了翻,一个很可能的原因是之前的代码出现了越界操作,导致malloc分配函数所涉及的一些信息被破坏.在这个思想的指导下,今天又是郁闷 ...

对于c语言存储分配程序(malloc函数)实现的理解

内容主要出自一书,不得不说这是一本程序员必读的书,我大二读了前面几章就扔到一边了,直到最近才又拿起来再读,找不到言语来形容我现在后悔 ...

malloc&lpar;&rpar;函数&lpar;Linux程序员手册&rpar;及函数的正确使用【转】

转自:https://blog.csdn.net/david_xtd/article/details/7311204 名称 malloc,free,calloc,realloc--分配和释放动态内存 ...

malloc函数用法

malloc函数用法 函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间.返回类型是 void* 类型.void* ...

内存分配malloc函数注意事项。

malloc的全称是memory allocation,中文叫动态内存分配,用于向系统申请分配指定字节的内存空间 原型:extern void *malloc(unsigned int num_byt ...

malloc分配失败的两个现象

在实际代码中,malloc的反复分配释放,可能会导致某一次malloc分配失败,虽然上一次调用malloc分配成功(然后释放),下一次在相同地方调用malloc分配可能会失败,疑问在于,既然上一次分配 ...

使用malloc函数或new运算符为链表结点分配内存空间

目录 使用malloc函数或new运算符为链表结点分配内存空间 使用malloc函数或new运算符为链表结点分配内存空间 当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间 ...

malloc函数和其他内存分配函数

1. 需要包含头文件:#i nclude 或 #i nclude 函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间 ...

随机推荐

About me

stay hungry, stay foolish VaJoy / 蓝邦珏 Addr:Tencent Shenzhen E-Mail:vajoy@qq.com 站内:http://space.cnbl ...

0002 Oracle账户相关的几个语句

Oracle安装完成后,在“开始”里找到SQL Plus运行,要求输入帐号和密码,用system/密码连接. 1.Oracle里有一个默认的scott账户密码tiger,用该账户连接: CONN 用户 ...

Encode and Decode Strings

Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...

CentOS下Web服务器环境搭建LNMP一键安装包

CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...

html5 css3 如何绘制扇形任意角度

扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果

protocol buffer和当年corba ,和现在SOA有啥异同点

CORBA是对象管理集团(OMG)的一个标准,使得不同语言编写的,运行在不同计算机上的能够协同工作.标准包括分布式计算的通讯协议(GIOP和IIOP),可映射到多种语言的接口描述语言(IDL),对象请 ...

Apriori算法-数组-C语言

最后

以上就是跳跃高山为你收集整理的洛谷C语言支持malloc吗,malloc函数分配失败处理的严重性的全部内容,希望文章能够帮你解决洛谷C语言支持malloc吗,malloc函数分配失败处理的严重性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部