如问题中的两个C++语句,int **shortTargets;shortTargets = new int *[fileSum];是从别人的代码中找出来的,运行时出了问题。这个两个语句的意思应该是创建一个指针数组吧,数量是fileSum个。但是在调试时发现,shortTargets有地址,但shortTargets[1]是一个乱码地址,请问这是怎么回事呢?应该怎样解决?
4 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
shortTargets[1] 没有开辟内存空间,肯定是乱码了
可以这么初始化:
for(int i=0;i<fileSum;i++)
shortTargets[i] = new int[10];
慕村225694
TA贡献1880条经验 获得超4个赞
你这样定义了指针数组后,相当于定义了一组指针,但是这些指针都没有赋值。
可以
shortTargets[1] = NULL;
类似的给指针赋值为空,
或者
shortTargets[1] = new int[10];
给指针分配内存空间。
DIEA
TA贡献1820条经验 获得超2个赞
指针数组 还没有被初始化,当然都是乱码:
int **shortTargets;
shortTargets = new int *[fileSum];
memset(shortTargets, 0, fileSum);
再看下shortTargets[1]的值是不是0了。
慕妹3242003
TA贡献1824条经验 获得超6个赞
事实如此 C++任何非void对象都有地址,包括指针 指针的指针.. debug下new 对象自动初始化为0xcdcdcdcd,也就是shortTargets[1]的初始值.shortTargets使用一般会有二次类初始化赋值,即 先有
shortTargets=new int *[fileSum];
for(int i=0;i<fileSum;++i)
shortTargets=new int;//该赋值按实际使用赋值
- 4 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消