【发布时间】:2015-06-17 19:53:42
【问题描述】:
我正在使用 Dev-C++ 编译器用 C 语言做一个家庭作业项目。奇怪的是,我遇到了一个返回我0 的malloc 函数,这意味着它的堆内存不足。我几乎不怀疑内存已满。
我已经包含了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();
【问题讨论】:
-
您有问题吗?
-
@BillLynch ,“这里有什么问题?”
-
@BillLynch 正式问题是
What is wrong here?,上下文是primRP和primCP打印为00000000。 -
@GSerg:在问题中他回答了。
malloc()无法分配您的请求时,允许返回NULL。 -
@BillLynch 那么问题是,为什么,鉴于结构是如此之小,内存几乎没有接近满。事实上,我相信 Bjorn Munch 的回答是正确的。 OP 应该通过将分配线移到顶部来验证这一点。
标签: c memory malloc heap-memory dev-c++