社区
VxWorks
帖子详情
有段代码,大家帮忙看一下,谢谢。
findheart
2006-10-10 11:50:42
有这样一段代码(相关声明略):
iFd = 0;
snd.size = iSize;
snd.data = malloc(iRecvSize);
memcpy(snd.data, cData, iSize);
iRet = write( iFd, (char*)&snd, sizeof(snd));
这里是不是有memory leak的问题?write()之后是不是需要free掉snd.data?
...全文
215
5
打赏
收藏
有段代码,大家帮忙看一下,谢谢。
有这样一段代码(相关声明略): iFd = 0; snd.size = iSize; snd.data = malloc(iRecvSize); memcpy(snd.data, cData, iSize); iRet = write( iFd, (char*)&snd, sizeof(snd)); 这里是不是有memory leak的问题?write()之后是不是需要free掉snd.data?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hyg2008
2006-10-13
打赏
举报
回复
如果是故意要传递指针,那么在这里就不能free,应该等到接受者处理完数据之后再free,否则就没有任何意义了。
yaopg
2006-10-13
打赏
举报
回复
hyg2008(蓝色雨)说得对,data内容不在结构体中,这样发一个申请到的指针给对方,不知是故意还是搞错了。
hyg2008
2006-10-13
打赏
举报
回复
另外,iRet = write( iFd, (char*)&snd, sizeof(snd));
snd.data 应该是个指针吧,这里是有问题的,snd.data指向的数据根本没有write进去,只有一个指针。
hyg2008
2006-10-13
打赏
举报
回复
为什么要malloc呢?为什么不用局部变量?
我一看到malloc就不爽,即使要用malloc就应该结合memPartCreate()嘛
maplewasp
2006-10-10
打赏
举报
回复
正如LZ所说:需要free(snd.data),要不然确实会产生内存泄漏。
2.临界段
代码
学习
临界段
代码
的定义 临界段
代码
,也称作临界域,是一段不可分割的
代码
。uC/OS-III中包含了很多临界段
代码
。如果临界段可能被中断,那么就需要关中断以保护临界段。如果临界段可能被任务级
代码
打断,那么需要锁调度器保护临界段。uC/OS-III 中的临界段的保护方法决定于ISR 中对消息的处理方式。详见 “ 中断管理” 。如果OS_CFG_ISR_POST_DEFERRED_EN 被设为0(见OS_C
段权限检查&
代码
跨段跳转
处理器的段保护机制可以识别4个特权级,从0-3。权值越大,特权越小 环的中心(为具有最高特权级的
代码
,数据和栈保留)通常为关键性软件所有,如操作系统内核。外环的给不是很关键的软件使用。(使用2个特权级的系统应使用特权0和特权3) 处理器使用特权级来防止低权限的进程访问具有高权限级别的段。当处理器检测到一个特权违例就会产生一个通用保护异常(GP)。 ......
26-
代码
跨段跳转
1. 什么是
代码
跨段 简单来讲,
代码
跨段本质上就是修改CS段寄存器的值,即把另一个
代码
段的描述符加载到cs段寄存器。 前面我们也说过,CS段寄存器不能单独修改,需要和EIP寄存器一起修改才行,因此想要实现
代码
跨段访问就需要使用一些特定的指令来完成,例如jmp far指令就可以完成
代码
跨段访问。 2.
代码
间跳转流程 2.1 查表得到段描述符 然后CPU根据段选择子查找G...
临界段
代码
保护
前言 1:临界段:在执行的时候不能被中断的
代码
段,最常见的是对全局变量的操作,能关闭的最大中断 由这个宏决定configMAX_SYSCALL_INTERRUPT_PRIORITY 他是按照单片机的中断等级的,比他小的都不能控制,因为操作的是单片机中的寄存器 2:在FreeRTOS中,对中断的开关是通过操作BASEPRI寄存器来实现的。当他设置为5时,所有优先级号>=5的中断都被关闭(等级比他低的都关掉)。若设置为0,则不关闭任何中断 1:关中断 不能在中断里面使用的 /*1:不带返回值的关中断函数,不能嵌
ucosIII临界段
代码
临界段:临界段并不是一片区域,而是一段时间 临界段
代码
:一段完整的程序必须连续运行,不能被打断的
代码
中断处理函数和任务都会访问的临界段
代码
,需要用关中断的方式加以保护 只有任务访问的临界段
代码
,一般用给调度器上锁的方式加以保护 关于临界段的宏定义 OS_CFG_ISR_POST_DEFERRED_EN 设置为0,使用关中断方法保护临界段
代码
;若设置为1,使用给调度器上锁的方法保护临界段
代码
OS_CRITICAL_ENTER() 代表进入临界段
代码
OS_CRITICAL_EXIT()/OS_.
VxWorks
2,187
社区成员
2,913
社区内容
发帖
与我相关
我的任务
VxWorks
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
复制链接
扫一扫
分享
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章