我有一个结构定义如下:
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;
我很想对此行为做出解释。
最佳答案
您的初始代码看起来不错,问题一定在其他地方。
// 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)
关于c - 创建指向结构的指针将提供open_stackdumpfile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41172707/