malloc并赋值:在OS X中运行良好的C代码; 不在Win 8.1中

我写的代码在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 } }

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...