【发布时间】:2013-05-31 01:37:42
【问题描述】:
我是 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
我已经尝试了所有方法,但我找不到错误在哪里。请你帮助我好吗? 谢谢!!
【问题讨论】:
-
你的机器有多少内存?是 64 位的吗?
-
您确定要
MAX_FILE_SIZE迭代吗? -
是的,你知道你在这里分配了大约 2.5GB 的内存吗?
MAX_FILE_SIZE * MAX_FILE_SIZE = 2500000000. -
对于初学者,您没有正确使用
malloc。不应该是listVectorOject = malloc(MAX_FILE_SIZE * sizeof(VectorObject));吗?
标签: c pointers memory allocation