动态内存分配
// oj专用.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//
#include "pch.h"
#include <iostream>
int main()
{
int M, N, i, j, m, n, sum = 0, **a;
printf("input two number:");
scanf_s("%d %d", &M, &N);
a = (int**)malloc(M * sizeof(int*));//????????
*a = (int*)malloc(N * sizeof(int));//??????????
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
scanf_s("%d", &a[i][j]);
printf("input two number:");
scanf_s("%d %d", &m, &n);
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
sum = sum + a[i][j];
printf("%d", sum);
}
上面注释的两行,我用动态内存分配创建二维数组,为什么最后不能运行?
下面是运行结果:
“oj专用.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。
“oj专用.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。
“oj专用.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。
“oj专用.exe”(Win32): 已加载“C:\Windows\SysWOW64\vcruntime140d.dll”。无法查找或打开 PDB 文件。
“oj专用.exe”(Win32): 已加载“C:\Windows\SysWOW64\ucrtbased.dll”。无法查找或打开 PDB 文件。
线程 0x2d6c 已退出,返回值为 0 (0x0)。
0x5AA1939E (ucrtbased.dll)处(位于 oj专用.exe 中)引发的异常: 0xC0000005: 写入位置 0xCDCDCDCD 时发生访问冲突。
程序“[1096] oj专用.exe”已退出,返回值为 0 (0x0)。