【发布时间】:2020-11-16 18:33:36
【问题描述】:
我想知道你是否可以帮我解决这个问题。
我有一个循环读取一些数字。
我想初始化一个 malloc,它将这些数字中的每一个添加到一个数组中,但我们不知道 malloc 的大小。
你能帮我解决这个问题吗?
我想做这样的事情。我知道如何用 Java 做,但我想用 C 做:
int[] mark = {1, 2, 3, 4}; //how to do if we don't know the size of mark?
ArrayList<Integer> arr = new ArrayList;
for loop{
arr.add(mark[i]); //so, for each loop the malloc adds mark[i]. We don't care about the size of the malloc
}
谢谢!
【问题讨论】:
-
好吧,为什么不开始写
c看看会发生什么?在java中写一个关于c的问题很奇怪 -
因为我完全了解 Java。我是C新手,我不知道该怎么做。对我来说,如何在 java 中做到这一点是 100% 合乎逻辑的,但我在 C 中一无所知
-
@user13425812 通常你从十个元素开始(比如
malloc(10 * sizeof(int))),然后编写一个函数来添加到分配的内存范围中的正确位置并跟踪你有多少元素放在那里,当它满了的时候你realloc它,比方说,它的当前大小加倍。 -
如果您阅读 ArrayList 的 java 代码,您会发现它不会在每次添加新元素时分配新内存。它使用一个变量,如顶部,用于控制数组的大小(增长时,收缩时)。你可以在 C 中做同样的事情
-
@user13425812 你搞定了吗?
标签: java c loops arraylist malloc