gpt4 book ai didi

c - 在 C 中将 malloc 与结构体和指针一起使用

转载 作者:行者123 更新时间:2023-11-30 19:23:02 34 4
gpt4 key购买 nike

我对 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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com