我們使用malloc函數爲x_space成功分配了內存。但是,在爲其分配值時失敗。感謝您的關注。malloc成功但分配失敗
以下是來自Liblinear的train.c(一個開源的svm工具)。
#include<stdio.h>
#include<stdlib.h>
struct feature_node
{
int index;
double value;
};
void main()
{
struct feature_node * x_space;
long j;
x_space =(struct feature_node *)malloc(306396532*sizeof(struct feature_node));
if(x_space)
{
for(j=0;j<306396532;j++)
x_space[j].index=0; /* fail when j=37961212, ACCESS VIOLATION */
}
else
printf("malloc failed.\n");
puts("End");
getchar();
}
提示:'306396500 * sizeof(double)'評估的是什麼? 'int'類型有多大? – Mysticial
你怎麼知道'malloc'成功了?你沒有檢查'malloc'的返回值。 –
@YaoHao如果失敗了,那很有可能,它會在第一次迭代時崩潰。在進入循環之前,sizeof(double)的大小是(size)( – Mysticial