MTK的内存申请释放?

lasttimes 2008-09-21 11:09:15
代码如下:

int *pArray[100];
for ( i = 0 ; i < 10 ; i ++ )
{
for( j = 0 ; j < 10 ; j ++ )
{
pArray[ i*10 +j] = OslMalloc(1000);
}
}

如上的一段代码运行会提示出错,出错时i = 8,j = 2
出错信息:
OSC 0x b44> ERROR: (E:\temp\07AMP\modis\oscar\src\osc_buffer.c #429) OSC_Buffer_
Alloc: -30
[1] Fatal Error (804): Buffer not available - MMI


请问是怎么回事。难道MTK中分配的内存块的个数还是有限制的吗?只听说好像一次申请的大小不能超过2K。
...全文
1582 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinyuiancai 2011-11-03
  • 打赏
  • 举报
回复
...................
sheldon4090 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guojin08 的回复:]

参见mtk文档《SystemServiceManual_V1.3.pdf》
[/Quote]

请问这个文档哪里可以找到?
guojin08 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lasttimes 的回复:]
media_get_ext_buffer
media_get_ext_buffer_ext
忘了问下,这两个有什么不同吗?
[/Quote]


#define media_get_ext_buffer(src_mod_id, buffer_p, buffer_size)\
media_get_ext_buffer_ext(src_mod_id,buffer_p, buffer_size,__FILE__,__LINE__)
guojin08 2009-03-25
  • 打赏
  • 举报
回复
参见mtk文档《SystemServiceManual_V1.3.pdf》
lasttimes 2008-09-24
  • 打赏
  • 举报
回复
media_get_ext_buffer
media_get_ext_buffer_ext
忘了问下,这两个有什么不同吗?
lasttimes 2008-09-23
  • 打赏
  • 举报
回复
谢谢楼上的大哥了,结贴。
哈哈。

qianjingwuxian 2008-09-23
  • 打赏
  • 举报
回复
使用的内存区域不同。
OslMalloc 所用内存位置有限,多次分配容易导致问题。

而media_get_ext_buffer可以分配较大的内存区域,然后你可以做后续处理。

总之,尽量少用动态分配内存的方式。

PS:
你可以在代码里搜索相关函数,借鉴他们的使用方式。
lasttimes 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qianjingwuxian 的回复:]
也考虑用这些API:

#define media_get_ext_buffer(src_mod_id, buffer_p, buffer_size)\
media_get_ext_buffer_ext(src_mod_id,buffer_p, buffer_size,__FILE__,__LINE__)
#define media_get_int_buffer(src_mod_id, buffer_p, buffer_size)\
media_get_int_buffer_ext(src_mod_id,buffer_p,buffer_size,__FILE__,__LINE__)
#define media_free_int_buffer(src_mod_id, buffer_p)\
media_free_int_buffer_ext(src_mod_id, …
[/Quote]

to qianjingwuxian:
请问这些API与OslMalloc OslMfree有啥不同?
qianjingwuxian 2008-09-23
  • 打赏
  • 举报
回复
也考虑用这些API:

#define media_get_ext_buffer(src_mod_id, buffer_p, buffer_size)\
media_get_ext_buffer_ext(src_mod_id,buffer_p, buffer_size,__FILE__,__LINE__)
#define media_get_int_buffer(src_mod_id, buffer_p, buffer_size)\
media_get_int_buffer_ext(src_mod_id,buffer_p,buffer_size,__FILE__,__LINE__)
#define media_free_int_buffer(src_mod_id, buffer_p)\
media_free_int_buffer_ext(src_mod_id, buffer_p, __FILE__, __LINE__)
#define media_free_ext_buffer(src_mod_id, buffer_p)\
media_free_ext_buffer_ext(src_mod_id, buffer_p, __FILE__, __LINE__)
qianjingwuxian 2008-09-23
  • 打赏
  • 举报
回复
MTK对内存动态分配支持的不是很好。

如果需要分配,你可以一次性的调用OslMalloc分配函数,然后自己来分别使用。

也可以定义全局数组来代替。

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧