首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

malloc对内存储器有限制么,请帮忙修改一个程序

2013-01-17 
malloc对内存有限制么,请帮忙修改一个程序如下程序,分配了12288次就执行不了,机器的内存有几十G,这是怎么

malloc对内存有限制么,请帮忙修改一个程序
如下程序,分配了12288次就执行不了,机器的内存有几十G,这是怎么回事 


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ARTICLE_S 12782
#define WORD_S 17547
int num_of_ulong(unsigned long i);
void error_and_die(const char *msg) {
  perror(msg);
  exit(EXIT_FAILURE);
}
//unsigned long v[WORD_S][ARTICLE_S];

int main(void){
    unsigned long word,article;
    unsigned long part,position;
    unsigned long t;
  unsigned long i,j,k;

    unsigned long *v[ARTICLE_S];
    for(i=0lu;i<WORD_S;i++){
      v[i]=(unsigned long *)malloc(ARTICLE_S*sizeof(unsigned long));
      printf("succ\n");
    }
/**    
 * ......
  }*/
    for(i=0lu;i<WORD_S;i++){
      free(v[i]);
    }
} malloc 内存
[解决办法]


    unsigned long *v[ARTICLE_S];
    for(i=0lu;i<WORD_S;i++){//这有问题,数组长度为ARTICLE_S,你却用了WORD_S
      v[i]=(unsigned long *)malloc(ARTICLE_S*sizeof(unsigned long));
      printf("succ\n");
    }

[解决办法]
引用:
引用:C/C++ code?12345    unsigned long *v[ARTICLE_S];    for(i=0lu;i<WORD_S;i++){//这有问题,数组长度为ARTICLE_S,你却用了WORD_S      v[i]=(unsigned long *)malloc(ARTICLE_S*sizeof(u……

你仔细看他在说什么。他说的没错。
[解决办法]
引用:
引用:
引用:C/C++ code?12345    unsigned long *v[ARTICLE_S];    for(i=0lu;i<WORD_S;i++){//这有问题,数组长度为ARTICLE_S,你却用了WORD_S      v[i]=(unsigned long *)malloc(ARTIC……

+1 显然数组越界了。楼主你release一下,看看还是不是12288次

热点排行