Malloc返回0?

时间:2015-04-12 12:32:00

标签: c memory malloc heap dev-c++

我正在使用Dev-C ++编译器在C中完成一个家庭作业项目。奇怪的是,我已经坚持使用malloc函数返回0,这意味着它已经没有堆内存了。我几乎不怀疑记忆已经满了。  我已经加入了windows.h库。

这是该功能的问题部分。 printf给了我:

  

00000000 ... 00000000 .... 005C1058

这里有什么问题?

typedef struct tcat {
    char *namec;
    struct tcat *nextc;
    struct tprod *firstp; 
}CTGR;

typedef struct tprod {
    char *namep;
    float price;
    int qt;
    struct tprod *nextp;
}PRDCT;

void Srch(int i)
{
    //data base population
    int k,r;

    //categories of components
    CTGR *p,*primc;
    primc = (CTGR *)malloc(sizeof(CTGR));

    primc -> namec = "Resistances";
    p = primc -> nextc;
    p -> namec = "Capacitors";
    p -> nextc = 0;


    PRDCT *q,*primRP,*primCP;
    primRP = (PRDCT *)malloc(sizeof(PRDCT));
    primCP = (PRDCT *)malloc(sizeof(PRDCT));

    printf(" %p ... %p .... %p",primRP,primCP,primc);
    getch();

1 个答案:

答案 0 :(得分:3)

p = primc -> nextc;

可能是罪魁祸首。该值未设置且可以是任何值,因此当您通过它分配时,您将在内存中写入一些不可预测的位置。