beike2001

beike2001

0个粉丝

10

问答

0

专栏

1

资料

beike2001  发布于  2016-11-25 11:36:19
采纳率 0%
10个问答
4785

HI_MPI_SYS_MmzAlloc分配内存,程序出错,求助。

 
问题是这样的:
我在自己的程序中封装个动态库,库中调用HI_MPI_SYS_MmzAlloc分配内存:
printf("~~~~~~Debug Malloc:111111111~~~~~~~~~~~~~~~~\n");
HI_MPI_SYS_MmzAlloc(pPhyAddr, (void**)&data, NULL, HI_NULL, totalsize);
printf("~~~~~~Debug Malloc:222222222~~~~~~~~~~~~~~~~\n");

运行结果提示出错,程序直接退出。
错误提示:
~~~~~~Debug Malloc:111111111~~~~~~~~~~~~~~~~
MMB LEAK(pid=1132): 0x8854C000, 233472 bytes, ''
mmz_userdev_release: mmb<0x8854C000> mapped to userspace 0xb6719000 will be force unmaped!
Segmentation fault
还以为是没有在库中初始化MPI的原因,加上初始化代码:
static HI_S32 Library_MPI_Init(HI_VOID)
{
    HI_S32 s32Ret;
    VB_CONF_S struVbConf;
    MPP_SYS_CONF_S struSysConf;

    HI_MPI_SYS_Exit();
    HI_MPI_VB_Exit();

    memset(&struVbConf, 0, sizeof(VB_CONF_S));
    struVbConf.u32MaxPoolCnt             = 128;
    struVbConf.astCommPool[0].u32BlkSize = 1920 * 1080 * 2;
    struVbConf.astCommPool[0].u32BlkCnt  = 40;
       
    s32Ret = HI_MPI_VB_SetConf(&struVbConf);
    if (HI_SUCCESS != s32Ret)
    {
        printf("HI_MPI_VB_SetConf fail,Error%d\n", s32Ret);
        return s32Ret;
    }
    s32Ret = HI_MPI_VB_Init();
    if (HI_SUCCESS != s32Ret)
    {
        printf("HI_MPI_VB_Init fail,Error%d\n", s32Ret);
        return s32Ret;
    }
    struSysConf.u32AlignWidth = 16;//64;//Orignal Value 64
    s32Ret = HI_MPI_SYS_SetConf(&struSysConf);
    if (HI_SUCCESS != s32Ret)
    {
        printf("HI_MPI_SYS_SetConf fail,Error%d\n", s32Ret);
        (HI_VOID)HI_MPI_VB_Exit();
        return s32Ret;
    }

    s32Ret = HI_MPI_SYS_Init();
    if (HI_SUCCESS != s32Ret)
    {
        printf("HI_MPI_SYS_Init fail,%d\n", s32Ret);
        (HI_VOID)HI_MPI_VB_Exit();
        return s32Ret;
    }

    return HI_SUCCESS;
}
初始化后再去进行HI_MPI_SYS_MmzAlloc分配,结果还是出错:
@@@@@@@@@@@@Debug Hi_LibInit@@@@@@@@@@@@@@@
~~~~~~Debug Malloc:111111111~~~~~~~~~~~~~~~~
MMB LEAK(pid=1132): 0x8854C000, 233472 bytes, ''
mmz_userdev_release: mmb<0x8854C000> mapped to userspace 0xb6719000 will be force unmaped!
Segmentation fault

问题是同样的初始化方法和分配在主应用程序中分配是没有问题的。

麻烦请教论坛知情人士,到底是哪里出了问题。非常感谢。。。。
我来回答
回答3个
时间排序
认可量排序

hanfei69882

2个粉丝

26

问答

0

专栏

2

资料

hanfei69882 2016-11-25 17:06:35
认可0
看打印是申请了内存没有正常释放,函数退出之后,变量无效了,指向的内存没有处理

主应用程序是没有退出的,还没有涉及释放问题

beike2001

0个粉丝

10

问答

0

专栏

1

资料

beike2001 2016-11-25 17:48:14
认可0
打印出错信息后,程序直接退出了。
我是全局变量分配内存的,只分配一次,程序退出后才会涉及到释放。
问题是根本没有到释放那一步:dizzy::dizzy:

beike2001

0个粉丝

10

问答

0

专栏

1

资料

beike2001 2016-11-28 10:20:34
认可0
帮忙顶啊 论坛大牛们都哪里去了???
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区