[英]Segmentation fault, 2-Dimensional Matrix, malloc
我正在嘗試使用 malloc 創建一個二維數組。 我的代碼似乎正確,但是當我嘗試設置值時,我收到“分段錯誤”消息。
#include <stdio.h>
#include <stdlib.h>
int main(){
int i, j;
int **m = (int **) malloc(5 * sizeof(int));
if(m == NULL){
printf("Error");
getchar();
exit(-1);
}
for(i = 0; i < 5; i++){
m[i] = (int *) malloc(5 * sizeof(int));
if(m[i] == NULL){
printf("Error");
getchar();
exit(-1);
}
}
for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
printf("%d %d\n", i, j);
m[i][j] = 0;
}
}
for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
printf("%d ", m[i][j]);
}
printf("\n");
}
}
謝謝。
改變
int **m = (int **) malloc(5 * sizeof(int));
到
//---------------------------------------v
int **m = (int **) malloc(5 * sizeof(int *));
當int
大小不等於指針變量的大小時,您的代碼將失敗。
某些系統的指針大小可能不等於 int 的大小。 在您的情況下,您假設指針的大小為 int
int **m = (int **) malloc(5 * sizeof(int));
將其更改為
int **m = malloc(5 * sizeof(int *));
使用后總是釋放內存。 它會導致內存泄漏。
使用 malloc 時也不要強制轉換請在此處查看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.