我对 C 有点陌生,我试图了解 malloc() 与结构和指针的用法。这是我正在尝试编写的程序的片段
typedef struct
{
char *id;
char *ocup;
char cj[15]; //data to fill the vector
} T1;
typedef struct
{
T1 *a1;
T1 *a2;
} T2;
T2* Aloc(int mp)
{
T1 *p,*s;
T2 *af = (T2*)malloc(sizeof(T2));
if(af == NULL)
return 0;
af->a1 = (T1*)malloc(sizeof(T1) * mp);
if(af->a1 == NULL)
return 0;
// trying to go through the freshly created vector
// but without success
for(p = af->a1, s = p + mp; p < s; p++)
af->a2 = p;
return af;
}
// mp = size of the struct
T1 *a1
是 vector 的起始地址
T2 *a2
是它的结尾(...或者它可能在 vector 中我想要的任何地方结束)
如果我尝试编译上面的代码,编译器就会卡住。我没有主意了。我究竟做错了什么? :(
谢谢!
最佳答案
除了看起来很难阅读并且可能导致内存泄漏的代码之外,我会坚持不懈地说这段代码应该在没有“卡住”的情况下运行。
根据你的问题,它在编译过程中卡住,这意味着你的编译器有问题。虽然这可能与正在编译的代码有关,但需要修复的是编译器而不是您的代码。
如果您说错了并且卡住发生在运行时期间,那么您需要更仔细地分析卡住发生的位置,因为我不相信它仅在这段代码中发生。现在大多数编译器都带有调试器。学习使用它对你自己来说是一个很大的帮助。
关于c - 在 C 中将 malloc 与结构体和指针一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790601/