我正在使用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();
答案 0 :(得分:3)
p = primc -> nextc;
可能是罪魁祸首。该值未设置且可以是任何值,因此当您通过它分配时,您将在内存中写入一些不可预测的位置。