c/c++语言开发共享创建一个int数组,其大小基于NSArray的大小

我正在尝试根据运行时获得的大小创建并归零一个int数组:

 size = [gamePiece.availableMoves.moves count]; //debugger shows size = 1; int array[size]; //debugger shows this as int[0] ! memset(array, 0, size); indexes = array; 

sizeindexes都是这个类的ivars:

 int size; int* indexes; 

不过,我最终得到了一个0长度的数组。 如何使用[gamePiece.availableMoves.moves count]指示的大小创建它?

    首先,你无法做你正在做的事情。 即使这个工作,当方法返回并删除当前堆栈帧时,数组将消失。 您需要动态分配数组,然后在释放对象时需要记住释放它。 所以:

     size = [gamePiece.availableMoves.moves count]; indexes = calloc(size, sizeof(int)); 

    然后,在你的-[dealloc]方法中:

     if( indexes ) free(indexes); 

    使用calloc(3)将确保将所有内存清零,因此您无需调用memset(3)。

    数组大小应该是常量整数表达式。 你需要使用malloc。

     int *array = malloc( sizeof(int) * size ) ; 

    现在,您通常可以通过索引运算符[]访问元素。

      以上就是c/c++开发分享创建一个int数组,其大小基于NSArray的大小相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519329.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐