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

标签 c pointers struct malloc

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

相关文章:

c - "dirCount"工作不正常

c - shell 中的 fork 命令打印进程 ID

c - 如何使用 clang 在 OS X 上使用 c11 标准库进行编译?

c - 如果我们将一个负整数赋值给一个无符号整数会发生什么

c - 在 C 中引用 char 数组指针

C 结构体,其中元素跨越字节边界并放置在下一个字节中

混淆 C 指针行为

使用 ctypes 在 C 中动态访问 Python 变量

创建 mpi 派生数据类型,包含带指针的结构

c# - 从二进制文件中随机读取结构