结构内存分配错误

时间:2012-05-29 20:34:36

标签: c pointers struct

我正在编写一个带有指针和结构的C项目,现在正面临这个问题: 有一个结构

struct Customer
{
    char Name[80];
    char Address[40];
    int ID;
    int Pnumber;
};

我将用* line_count *成员数量制作这个结构的动态数组。我使用这段代码,但它崩溃了一个程序:

struct Customer* ph;
ph = (struct Customer*)malloc(line_count * sizeof(struct Customer));

我做错了什么?

2 个答案:

答案 0 :(得分:1)

好:

struct Customer* ph;
ph = (struct Customer*)malloc(line_count * sizeof(struct Customer));

更好:

struct Customer* ph =
  (struct Customer*)malloc(line_count * sizeof(struct Customer));
if (!ph) {
  <<error handling>>
  ...

但坦率地说,这听起来像问题在你的代码的其他地方。

你的malloc()没有根本错误。

也许&#34; line_count&#34;是虚假的,也许&#34; malloc()&#34;失败(在这种情况下,它应该返回&#34; NULL&#34;)...或者您可能无法正确访问结构和/或无法正确初始化它。

实际崩溃的堆栈追溯将非常有用。

答案 1 :(得分:0)

您显示的代码段可能会在ph == NULL调用后malloc时崩溃,并且您取消引用它。

来自malloc手册页:

  

malloc()和calloc()函数返回指向已分配的指针   适合任何类型变量的内存。出错,   这些函数返回NULL。 a也可能返回NULL   成功调用大小为零的malloc(),或者成功调用   用nmemb或大小等于零来调用calloc()。