请问mymalloc可以申请二维指针吗

2019-07-20 16:10发布

XCoodinate_2D = (float**)mymalloc(SRAMIN,sizeof(float*) * segments);        //开辟行
YCoodinate_2D = (float**)mymalloc(SRAMIN,sizeof(float*) * segments);
         
        for(i = 0; i < segments; i++) //第二维
        {
                *(XCoodinate_2D+i) = (float*)mymalloc(SRAMIN,sizeof(float) * len); //开辟列  
                *(YCoodinate_2D+i) = (float*)mymalloc(SRAMIN,sizeof(float) * len);
        }
当第二维长度很长的时候,填进去的数据是错的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
charlefu
1楼-- · 2019-07-20 20:55
charlefu 发表于 2017-3-17 16:04
如果内存分配成功的话,要看你怎么访问这个数组了。

在数组没越界的情况下(内存充足的),数据出现异常的。在这里把第一维当作段的意思,比如我申请了
array[6][4000]; 数据是在最后一段array[5]异常;这部分代码是从VC复制过了的,VC是正常的

XCoodinate_2D = new float *[segments];                         //开辟行
YCoodinate_2D = new float *[segments];   

        for(int i = 0; i < EC_Method_gPara.EC_Segments; i++)
        {
                XCoodinate_2D = new float[len];      //开辟列
                YCoodinate_2D = new float[len];   
        }
charlefu
2楼-- · 2019-07-20 22:16
不好意思,内存池拿错个了,这个SDRAM的才是 SRAMEX,SRAMIN是内部RAM

一周热门 更多>