c - malloc返回0?

标签 c memory malloc heap-memory 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();

最佳答案

p = primc -> nextc;

可能是罪魁祸首。该值尚未设置,可以是任何值,因此当您通过它进行分配时,您正在写入内存中某个不可预测的位置。

关于c - malloc返回0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589493/

相关文章:

c - 为什么我存在未声明的变量?

c - * C 中的 Vs++ 优先级

c - 用C中的递归函数添加字符串

java - 如何预测递归方法的最大调用深度?

mongodb - 特定案例的存储引擎

iOS Swift malloc 错误

c++ - 在具有不受支持的组件的目标上使用 -fsanitize 标志

c - 使用 fork 在进程的二叉树中进行广度优先搜索

c++ - 在 C++ 中使用寄存器变量可以做多少坏事

c 数组错误,跳过一些元素