奇怪,为什么用CCArray变量赋值给新变量会影响到原变量?

1、引擎版本:(cocos2d-x 2.2.6)
2、编译环境:(windows+vs 2012)
3、问题描述:
出现问题的代码:

CCSprite* arrowRest::detectNearestEnemy(){ auto instance=gameManager::getInstance(); CCArray eee=(instance->existEnemies); if (instance->existEnemies.count()==0) { return NULL; } for (int i=0;i<instance->existEnemies.count();i++) { auto enemy=(CCSprite*)instance->existEnemies.objectAtIndex(i); CCPoint enemyPos=convertToNodeSpace(enemy->getPosition());
 } return (CCSprite*)(instance->existEnemies.objectAtIndex(0));
}

贴的代码不知道为什么都不换行的,我给个截图吧

其中instance->existEnemies 是CCArray 类型的类成员。
加多了第4行代码之后运行会报错,提示“0xC0000005: 读取位置 0xFEEEFEEE 时发生访问冲突。”

为什么只是简单的赋值语句,后面也没有对eee进行访问修改,会影响到原来的变量呢?

4、问题重现方式:

第一次进入detectNearestEnemy()没问题,错误发生在第二次进入detectNearestEnemy()函数。
5、截图:

要么越界,要么什么地方内存益处,把CCArray的内存覆盖了。

谢谢,我觉得应该是类对象这样直接用等号初始化会调用拷贝构造函数,而CCArray中没有实现拷贝函数导致的。
然后我又用CCArray自带的CreateWithArray()来复制(CCArray* enemyVector2=instance->existEnemies.createWithArray(&(instance->existEnemies));),发现也出错,看了下源码,复制的过程中也会调用CCArray中的Object的copy来负责对象,而我的CCarray存的是CCSprite对象,我发现CCSprite竟然没有对copyWithZone函数进行重写,估计是这个原因导致报错。