65,209
社区成员
发帖
与我相关
我的任务
分享
const int DATA_ROWS = 60*1024*1024;
const int DATA_COLUMNS = 20;
typedef struct COL_MEM
{
char* Col_index;
double* data;
int cols;
}ColMEM,*pColMEM;
//分配结构体内存
//[DATA_COLUMNS];// = new pColMEM[DATA_COLUMNS];//(pColMEM*)malloc(DATA_COLUMNS * sizeof(ColMEM));
for(int i =0; i< DATA_COLUMNS; i++)
mem[i] = (pColMEM)malloc(/*DATA_COLUMNS * */sizeof(ColMEM));
for(int ii =0; ii< DATA_COLUMNS; ii++)
mem[ii]->data = (double*)malloc(DATA_ROWS*sizeof(double));//new double[DATA_ROWS];//(double*)malloc(DATA_ROWS*sizeof(double));
while(!feof(fp))
{
for(int i =0; i< DATA_COLUMNS; i++)
{
fscanf(fp,"%lf",&rdata);
mem[i]->data[cur_row]=rdata;
//ar.data[cur_row] = data;
}
cur_row++;
mem[i]->cols = cur_row;
}

#include <stdio.h>
#include <stdlib.h>
const int DATA_ROWS = 60*1024*1024;
const int DATA_COLUMNS = 20;
typedef struct COL_MEM
{
char* Col_index;
double* data;
int cols;
}ColMEM,*pColMEM;
pColMEM mem[DATA_COLUMNS];
unsigned __int64 t;
int main() {
// 分配结构体内存
// [DATA_COLUMNS];// = new pColMEM[DATA_COLUMNS];//(pColMEM*)malloc(DATA_COLUMNS * sizeof(ColMEM));
t=0ui64;
for(int i =0; i< DATA_COLUMNS; i++) {
mem[i] = (pColMEM)malloc(/*DATA_COLUMNS * */sizeof(ColMEM));
if (NULL==mem[i]) {
printf("malloc mem[%d] fail!\n",i);
exit(1);
}
t+=(unsigned __int64)sizeof(ColMEM);
printf("malloc mem[%d] succ,total malloc %I64u bytes\n",i,t);
}
for(int ii =0; ii< DATA_COLUMNS; ii++) {
mem[ii]->data = (double*)malloc(DATA_ROWS*sizeof(double));//new double[DATA_ROWS];//(double*)malloc(DATA_ROWS*sizeof(double));
if (NULL==mem[ii]->data) {
printf("malloc mem[%d]->data fail!\n",ii);
exit(2);
}
t+=(unsigned __int64)DATA_ROWS*sizeof(double);
printf("malloc mem[%d]->data succ,total malloc %I64u bytes\n",ii,t);
}
return 0;
}
//malloc mem[0] succ,total malloc 12 bytes
//malloc mem[1] succ,total malloc 24 bytes
//malloc mem[2] succ,total malloc 36 bytes
//malloc mem[3] succ,total malloc 48 bytes
//malloc mem[4] succ,total malloc 60 bytes
//malloc mem[5] succ,total malloc 72 bytes
//malloc mem[6] succ,total malloc 84 bytes
//malloc mem[7] succ,total malloc 96 bytes
//malloc mem[8] succ,total malloc 108 bytes
//malloc mem[9] succ,total malloc 120 bytes
//malloc mem[10] succ,total malloc 132 bytes
//malloc mem[11] succ,total malloc 144 bytes
//malloc mem[12] succ,total malloc 156 bytes
//malloc mem[13] succ,total malloc 168 bytes
//malloc mem[14] succ,total malloc 180 bytes
//malloc mem[15] succ,total malloc 192 bytes
//malloc mem[16] succ,total malloc 204 bytes
//malloc mem[17] succ,total malloc 216 bytes
//malloc mem[18] succ,total malloc 228 bytes
//malloc mem[19] succ,total malloc 240 bytes
//malloc mem[0]->data succ,total malloc 503316720 bytes
//malloc mem[1]->data succ,total malloc 1006633200 bytes
//malloc mem[2]->data succ,total malloc 1509949680 bytes
//malloc mem[3]->data fail!
//