我写的代码在OS X中没有任何问题,但在VS 2013社区上运行时出现以下错误。
Unhandled exception at 0x001A3D22 in Myproject.exe: 0xC0000005: Access violation writing location 0x00000000.
这是有问题的代码。 原来的代码有更多的行,但下面的代码本身产生相同的错误。
#include <stdio.h> int main(void){ int **p; p = (int **)malloc(sizeof(int *) * 5000); for (int i = 0; i < 5000; i++) p[i] = (int *)malloc(sizeof(int) * 5000 * 25); for (int i = 0; i < 5000 * 25; i++) p[0][i] = 0; for (int i = 1; i < 5000; i++) p[i][0] = 0; //<- error on this line printf("donw!n"); system("pause"); return 0; }
这是发生错误时的状态。 我和P被涂成红色。
name value type i 4118 int p 0x00758fe8 {0x0075de48 {0}} int * * p[0] 0x0075de48 {0} int * p[0][i] 0 int p[i] 0x00000000 {???} int *
谁能告诉我什么使得OSX和Windows之间的区别? 在OSX中,我使用gcc编译了代码。
任何开源的C / C + +库/框架的RPCpipe道/内部的Linux套接字?
做x:静态扩展在WinRT-XAML中工作吗?
如何从C程序输出主机的IP地址?
lockingLinux串行端口
为什么在Linux上使用更multithreading时内存消耗会增长? (C ++)
MinGW如何实现C ++库支持?
如何处理在VCL应用程序中发布,注册的Windows消息?
监控文件更改c ++ linux
没有标题栏的简单窗口
我在哪里可以学习如何使C ++程序与操作系统(Linux)交互
当p[i]为NULL ,很可能是malloc未能分配所需内存的结果。 添加检查来检测。
p = (int **)malloc(sizeof(int *) * 5000); if ( p == NULL ) { // Deal with error. } for (int i = 0; i < 5000; i++) { p[i] = (int *)malloc(sizeof(int) * 5000 * 25); if ( p[i] == NULL ) { // Deal with error } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。