我有一个结构定义如下:
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;
我很想对这种行为做出解释。
答案 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)