我用cocos2d-x开发一款游戏,里面用到了二级指针来实现动态长度的二维数组的效果,可是在运行时这个二级指针访问时会无故崩溃,我觉得是指针被无故释放掉了,下面是我使用的方式,之后我会对数组一一赋值,其问题出现具有偶然性,有的时候正常有的时候报错。。c++知识不是很牢固,求大神指点
Entity *** entitylist;
entitylist=new Entity**[MAX_HEIGHT];
for(int i=0;i<MAX_HEIGHT;i++)
{
entitylist[i]=new Entity*[MAX_WIDTH];
}
你把问题想复杂了
你把问题想复杂了
回复 @丁逸鹏:木有呢!如果游戏没有特殊要求,可以考虑使用STL标准库,比如vector什么的。最起码不会引起内存泄漏什么的有二维数组的吧。。我知道二维数组本质上是一位数组,像这样用不可以吗二维数组应该是 Entity** entitylist,而不是你上面的 Entity***entitylist.
数组你可以这样new:
A*a= new A[n];
delete []a;
二维数组你可以这样new:A (*a)[n] = new A[m][n];
delete []a;
你这个是三级指针了
2级只需要**
Entity**entitylist;
entitylist=newEntity**[MAX_HEIGHT];
for(inti=0;i<MAX_HEIGHT;i++)
{
*entitylist[i]=newEntity[MAX_WIDTH];
}
你的错误在于区别不开指针自身和指针所指的内容不要用那么蛋疼的东西。
Entity*arr=newEntity[MAX_HEIGHT*MAX_WIDTH];
访问的时候arr[i*MAX_WIDTH+j]
嫌麻烦可以用宏或者类模板。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。