[問題] 避免碎片化的動態記憶體配置方式
看板C_and_CPP (C/C++)作者eagle32 (バスケがしたいです)時間7年前 (2018/12/04 15:28)推噓1(1推 0噓 18→)留言19則, 6人參與討論串1/2 (看更多)
大家好. 我對於電腦記憶體的理解不多. 只是常聽說要避免記憶體碎片化.
所以就學了以下語法要一塊連續記憶體去配製一個陣列. 但是當陣列太大時.
譬如50*50*50 的 double array 執行時就發生segmentaion fault. 請大家指教我哪裡做錯想錯了.
謝謝大家.
#include <stdlib.h>
#include <stdio.h>
int main() {
double ***array;
double **ppData;
double *pData;
int l=50;
int m=50;
int n=50;
int i,j,k;
array = (double ***)calloc(l*m*n, l*sizeof(double **) + l*m*sizeof(double *) +
l*m*n*sizeof(double));
ppData = (double **) (array+l);
pData = (double *) (array+l+l*m);
for(i=0; i < l; i++)
{
array[i]=ppData;
ppData+=m;
for(j=0; j < m; j++)
{
array[i][j]=pData;
pData+=n;
}
}
for(i=0; i<l; i++)
for(j=0; j<m; j++)
for(k=0; k<n; k++)
printf("(%d, %d, %d)=%f\n", i,j,k,array[i][j][k]);
free(array);
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.103.228
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1543908520.A.2C3.html
→
12/04 15:44,
7年前
, 1F
12/04 15:44, 1F
→
12/04 15:46,
7年前
, 2F
12/04 15:46, 2F
→
12/04 15:47,
7年前
, 3F
12/04 15:47, 3F
→
12/04 15:51,
7年前
, 4F
12/04 15:51, 4F
→
12/04 17:10,
7年前
, 5F
12/04 17:10, 5F
→
12/04 17:14,
7年前
, 6F
12/04 17:14, 6F
→
12/04 17:27,
7年前
, 7F
12/04 17:27, 7F
→
12/04 21:54,
7年前
, 8F
12/04 21:54, 8F
→
12/04 22:46,
7年前
, 9F
12/04 22:46, 9F
→
12/04 22:46,
7年前
, 10F
12/04 22:46, 10F
→
12/04 23:02,
7年前
, 11F
12/04 23:02, 11F
→
12/04 23:02,
7年前
, 12F
12/04 23:02, 12F
→
12/04 23:03,
7年前
, 13F
12/04 23:03, 13F
→
12/04 23:04,
7年前
, 14F
12/04 23:04, 14F
→
12/04 23:05,
7年前
, 15F
12/04 23:05, 15F
→
12/04 23:06,
7年前
, 16F
12/04 23:06, 16F
→
12/04 23:08,
7年前
, 17F
12/04 23:08, 17F
→
12/04 23:09,
7年前
, 18F
12/04 23:09, 18F
推
12/08 08:07,
7年前
, 19F
12/08 08:07, 19F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章