gpt4 book ai didi

c - 如何在指针内部分配指针?

转载 作者:行者123 更新时间:2023-12-04 04:54:44 25 4
gpt4 key购买 nike

我是 C 编程新手(我的主要领域是 java),在 java 中存在我可以制作的 ArrayList

    ArrayList<Class> arraylist = new ArrayList<Class>();

我的类 Class 可以有几个项目,例如 int 或 string。

在c中,我发现我不能这样做,但需要做类似的事情,所以我这样做了
    typedef struct vectorObject {
int myInt;
char *charPointer;
} vectorObject;

我像这样定义我的结构的指针:
    vectorObject *listVectorObject;

并使用
    #define MAX_FILE_SIZE   50000

当我想分配它的内存时,我使用它:
    int i;
listVectorObject = malloc(MAX_FILE_SIZE);
if (listVectorObject == NULL ) {
printf("Out of memory1\n");
exit(1);
}
for (i = 0; i < MAX_FILE_SIZE; i++) {
listVectorObject[i].charPointer= malloc(MAX_FILE_SIZE);
if (listVectorObject[i].charPointer == NULL ) {
printf("Out of memory2\n");
exit(1);
}
}

问题是我总是得到一个
    Out of Memory2

我已经尝试了一切,但我找不到我的错误在哪里。请你帮助我好吗?
谢谢!!

最佳答案

我不认为你想要 50000 个 vector 对象,每个 vector 对象都有 50000 个字节的字符缓冲区。

所以看看这个:

  • 首先列出 1000 个 vector 对象
  • 然后对于每个将内存块分配给字符指针
  • 的人

    .
    int i, howmany= 1000;
    vectorObject *listVectorObject = malloc(sizeof(vectorObject)*howmany); // list of 1000 vectorObjects
    if (listVectorObject == NULL ) {
    printf("Out of memory1\n");
    exit(1);
    }

    // one file-size char-pointer for each vector object above
    for (i = 0; i<howmany; i++) {
    listVectorObject[i].charPointer= malloc(MAX_FILE_SIZE);
    if (listVectorObject[i].charPointer == NULL ) {
    printf("Out of memory2\n");
    exit(1);
    }
    }

    关于c - 如何在指针内部分配指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16921540/

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