heiheiOo

heiheiOo

0个粉丝

11

问答

0

专栏

0

资料

heiheiOo  发布于  2016-07-28 09:29:13
采纳率 0%
11个问答
2728

IVE_STCorner与IVE_LKOpticalFlow的数组访问问题

 
本帖最后由 heiheiOo 于 2016-7-29 08:32 编辑


使用IVE角点和LK算子,代码整体参照sample, k/j都有定义我没有贴上来,但是运行到pstPoint[0][k].s25q7X = astPointTmp[k].s25q7X; 提示Segmentation fault,pstPoint数组无法访问,无法进行赋值。

这个数组访问的问题有点想不明白,希望前辈能指点一下!
我来回答
回答8个
时间排序
认可量排序

heiheiOo

0个粉丝

11

问答

0

专栏

0

资料

heiheiOo 2016-07-28 09:55:21
认可0
        另:
我发现例如 pstPoint[1][1].s25q7X = 1;不会有Segmentation fault,但是 pstPoint[0][1].s25q7X = 1;会有Segmentation fault错误。

初始化中:
        u32Size = sizeof(IVE_POINT_S25Q7_S)* pstStLk->stLkCtrl.u16CornerNum;

        for (i = 0; i < 3; i++)
        {
                                  s32Ret = HI_MPI_SYS_MmzAlloc(&pstStLk->astPoint.u32PhyAddr, (void**)&pstStLk->astPoint.pu8VirAddr, NULL, HI_NULL, u32Size);
                pstStLk->astPoint.u32Size = u32Size;

        }

heiheiOo

0个粉丝

11

问答

0

专栏

0

资料

heiheiOo 2016-07-28 09:56:31
认可0
所以为什么pstPoint[0]不能访问呢?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-28 10:51:15
认可0
本帖最后由 zhuangweiye 于 2016-7-28 10:55 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=34992&ptid=12107]heiheiOo 发表于 2016-7-28 09:56[/url]
所以为什么pstPoint[0]不能访问呢?[/quote]

在line 10 处 加个打印

for( i= 0; i < 3; i++ )
{
     printf("pstPoint[%d] = %x\n", i, (unsigned int)pstPoint[ i ] );
     printf("stLk.astPoint[%d].pu8VirAddr = %x \n", i, (unsigned int) stLk.astPoint[ i ] .pu8VirAddr);
}

运行一下,看看打印结果

heiheiOo

0个粉丝

11

问答

0

专栏

0

资料

heiheiOo 2016-07-28 11:11:55
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34999&ptid=12107]zhuangweiye 发表于 2016-7-28 10:51[/url]
在line 10 处 加个打印

for( i= 0; i < 3; i++ )
[/quote]

pstPoint[0] = b6f3b000
stLk.astPoint[0].pu8VirAddr = b6f3b000
pstPoint[1] = b6f3a000
stLk.astPoint[1].pu8VirAddr = b6f3a000
pstPoint[2] = b6f39000
stLk.astPoint[2].pu8VirAddr = b6f39000

这样的,地址一样。
不知道为什么就是读写不了0.0

heiheiOo

0个粉丝

11

问答

0

专栏

0

资料

heiheiOo 2016-07-28 16:35:09
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34999&ptid=12107]zhuangweiye 发表于 2016-7-28 10:51[/url]
在line 10 处 加个打印

for( i= 0; i < 3; i++ )
[/quote]

unsigned char temp; 与pstPoint[0]地址挨着,fscanf读入的时候有字节对齐问题,读入数据之后pstPoint[0]被改了所以无法访问,unsigned char 改为int就好了。

师父下午来帮我看过之后真是学到了…:'(

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-28 16:50:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=35050&ptid=12107]heiheiOo 发表于 2016-7-28 16:35[/url]
unsigned char temp; 与pstPoint[0]地址挨着,fscanf读入的时候有字节对齐问题,读入数据之后pstPoint[0 ...[/quote]

本来要让你在line 33行加同样的打印的

后来给忘了

heiheiOo

0个粉丝

11

问答

0

专栏

0

资料

heiheiOo 2016-07-28 17:05:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=35051&ptid=12107]zhuangweiye 发表于 2016-7-28 16:50[/url]
本来要让你在line 33行加同样的打印的

后来给忘了[/quote]

前辈遇到这种问题遇到了要怎么思考诶?

我今天碰到了特别茫然,无从下手,找到了问题在何处也不知道如何分析是何原因……

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-28 17:26:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=35054&ptid=12107]heiheiOo 发表于 2016-7-28 17:05[/url]
前辈遇到这种问题遇到了要怎么思考诶?

我今天碰到了特别茫然,无从下手,找到了问题在何处也不知道如 ...[/quote]

既然段错误, 就看是哪个指针内容出错了或者哪个数组越界了或者是"踩内存"(楼主的问题)了

根据我让你加的打印应该会看出来 pstPoint[0]被改变了,然后就好找了,就这几行代码
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区