创建指向结构的指针会给出open_stackdumpfile

时间:2016-12-15 20:20:44

标签: c struct malloc

我有一个结构定义如下:

struct Complex {    
double _real;   
double _img; 
};

我正在尝试创建一个函数,该函数根据c字符串输入返回指向新复数的指针。我开始尝试创建一个结构,基于我在其他stackoverflow问题上看到的结构:

 struct Complex * newComplex = (struct Complex*)malloc(sizeof(struct Complex));

可悲的是,代码在运行时崩溃,说:

    0 [main] complex 14380 cyg
 trace to complex.exe.stackdump

我也试过运行以下内容,导致同样的错误:

struct Complex * newComplex;
newComplex = (struct Complex*) malloc(sizeof(struct Complex));

当我尝试调试这段代码时,我将其分解为部分,提出以下代码,这似乎正常工作:

 struct Complex * newComplex = (struct Complex*)malloc(sizeof(struct Complex));
 void *temp = malloc(sizeof(struct Complex));
 newComplex = (struct Complex*) temp;

我很想对这种行为做出解释。

1 个答案:

答案 0 :(得分:0)

您的初始代码看起来不错,问题必须在其他地方。

// test.c
#include <stdlib.h>
#include <stdio.h>

struct Complex {
    double _real;
    double _img;
};

int main() {
    struct Complex * newComplex = malloc(sizeof(struct Complex));

    newComplex->_real = 0;
    newComplex->_img = 1.0;

    printf("(%f %f)\n", newComplex->_real, newComplex->_img);
    free(newComplex);
    return 0;
}

gcc -Wall test.c ; ./a.out制作:

(0.000000 1.000000)
相关问题