我有幾行C++代碼,它有簡單的目的 - 將矩陣存儲在二維數組中,並且不會消耗比需要更多的內存。這意味着我必須爲矩陣中的每個數字分配內存,然後再將其放入矩陣中。二維數組(矩陣)內存分配問題
3838分割故障(核心轉儲)SH 「$ {SHFILE}」
的STACKDUMP:
#include <cstdlib>
#include <cstdio>
using namespace std;
int main() {
int ** matrix;
matrix = (int**)malloc(sizeof(int*));
// Fill in the matrix
matrix[0] = (int *) malloc(3 * sizeof(int));
matrix[0][0] = 5;
matrix[0][1] = 10;
matrix[0][2] = 15;
matrix[1] = (int *) malloc(3 * sizeof(int));
matrix[1][0] = 2;
matrix[1][1] = 4;
matrix[1][2] = 6;
int i, n;
// Print the whole matrix
for (n = 0; n < 3; n++) {
for (i = 0; i < 3; i++) {
printf("%i\t", matrix[n][i]);
}
printf("\n");
}
return 0;
}
當我編譯代碼以上並運行它,它打印矩陣時崩潰看起來像這樣:
Exception: STATUS_ACCESS_VIOLATION at eip=0040126A
eax=00000000 ebx=00B0021C ecx=00000000 edx=00000000 esi=6123DBAA edi=61179FC3
ebp=0028CD18 esp=0028CCF0 program=C:\workspace\c\PA1_9\dist\Debug\Cygwin_4.x-Windows\pa1_9.exe, pid 3828, thread main
cs=0023 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame Function Args
0028CD18 0040126A (6123DBAA, 61179FC3, 0028CD58, 61006CD3)
0028CD58 61006CD3 (00000000, 0028CD94, 61006570, 7EFDE000)
End of stack trace
我想會有一些指針/值的麻煩......但我不知道在哪裏和爲什麼......
在附註中,程序中存在內存泄漏。 – bjskishore123 2010-11-21 12:39:05
這是* NOT * C++。 – rubenvb 2010-11-21 12:44:53
當然是!這只是糟糕的C++。 :P – 2010-11-21 13:26:40