Unhandled Exception in raytrace.exe: C0000005 access violation
时间:2010-08-24
来源:互联网
我在调程序时出现这个错误,是如下语句引起的:
struct Vector **N;
N作为参数传入。我想把分配了内存且赋值了的N带出来。(在过程里分配内存并赋值)
*N = (struct Vector *)malloc(sizeof(struct Vector));
Unhandled Exception in raytrace.exe: C0000005 access violation
这是怎么回事?如何修正?
作者: liklstar 发布时间: 2010-08-24
作者: daybreakcx 发布时间: 2010-08-24
daybreakcx 发表于 2010-08-24 12:25
我的N是struct Vector **N。
作者: liklstar 发布时间: 2010-08-24
作者: davelv 发布时间: 2010-08-24
davelv 发表于 2010-08-24 12:40
可这个错误是在分配内存时出现的,还没等到赋值呢?
作者: liklstar 发布时间: 2010-08-24
这个N是一个指针吧,是指针就要有指向空间吧,那么你的*N是什么地方?N==&(*N) 是栈上的随机数据,或者你编译器给填充的东西(用的VC吧,看到C0000005了)。也就是说*N目前的地址是C0000005。这块内存是不能访问的,至于后面的malloc赋值语句,是要把malloc出来的内存地址放到C0000005这块内存上,自然就出错了。
画画内存图,自己用指针指一下。要知道指针本身也是要占用空间的!
作者: davelv 发布时间: 2010-08-24

作者: 奶茶dsk 发布时间: 2010-08-24
这个N是一个指针吧,是指针就要有指向空间吧,那么你的*N是什么地方?N==&(*N) 是栈 ...
davelv 发表于 2010-08-24 12:52
那我该怎么改呢?
作者: liklstar 发布时间: 2010-08-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28