0x00411509 处未处理的异常: 0xC0000005: 读取位置 0x3346326c 时发生访问冲突

sunshine757961368 2011-10-31 09:39:56
int * findmax(int * array,int size,int *index)

{
int i;
for(i=0;i<size;i++)
if (array[i]<array[*index])//这里老是运行时出错,说什么冲突
*index=i;
std::cout<<i;
return index;
};
int main()
{
int a[10]={33,91,54,67,82,37,85,61,19,68};
int * maxaddr=0;
int idx;

maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);

std::cout<<"the index of maximum element is"<<idx<<std::endl
<<"the address of it is"<<maxaddr<<std::endl
<<"the value of it is"<<a[idx]<<std::endl;
}




编译没有错误~~一运行就出错 牛牛们~~~求助~~~
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshine757961368 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mmns 的回复:]
idx 未初始化.导致函数中*index的值不可预知.所以array[*index]就访问了不该访问的地方.
[/Quote]



是的,是的,因为那部分是书上写的就没注意,光注意上部分自己写的那部分了,现在改好了,谢谢
梦境传说 2011-11-01
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
using namespace std;


int * findmax(int *array,int size,int *index)
{
int i = 0;
for(i=0;i<size;i++)
if (array[i]<array[*index])//这里老是运行时出错,说什么冲突
*index=i;
cout<<i;
return index;
}

int _tmain(int argc, _TCHAR* argv[])
{
int a[10]={33,91,54,67,82,37,85,61,19,68};
int * maxaddr=0;
int idx = 0;

maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);

cout<<"the index of maximum element is"<<idx<<endl
<<"the address of it is"<<maxaddr<<endl
<<"the value of it is"<<a[idx]<<endl;

system("pause");
return 0;
}


这样编译没错,定义的局部变量一定要初始化。
神农氏 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gfy5216 的回复:]

vs2008下,运行无错
[/Quote]
那是运气好,正好那个随机指向的地方是可用的.
gfy5216 2011-10-31
  • 打赏
  • 举报
回复
int * findmax(int * array,int size,int *index)

{
int i;
for(i=0;i<size;i++)
if (array[i]<array[*index])//这里老是运行时出错,说什么冲突
*index=i;
std::cout<<i;
return index;
};
int main()
{
int a[10]={33,91,54,67,82,37,85,61,19,68};
int * maxaddr=0;
int idx;

maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);

std::cout<<"the index of maximum element is"<<idx<<std::endl
<<"the address of it is"<<maxaddr<<std::endl
<<"the value of it is"<<a[idx]<<std::endl;
}

gfy5216 2011-10-31
  • 打赏
  • 举报
回复
vs2008下,运行无错
vilnies 2011-10-31
  • 打赏
  • 举报
回复
idx很明显没赋值就使用啊
神农氏 2011-10-31
  • 打赏
  • 举报
回复
idx 未初始化.导致函数中*index的值不可预知.所以array[*index]就访问了不该访问的地方.

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧