/*
* The mine_score structure describes the maximum normalized mutual information
* scores (i.e. the characteristic matrix if est=EST_MIC_APPROX, the
* equicharacteristic matrix instead). M[i][j] contains the score using a grid
* partitioning x-values into i+2 bins and y-values into j+2 bins. m and M are
* of length n and each M[i] is of length m[i].
*/typedefstruct mine_score
{
int n; /* number of rows of M */int *m; /* number of cols of M[i] for each i */double **M; /* the (equi)characteristic matrix */
} mine_score;
此外,在f-i中,矩阵M的大小也有变化。
/*
* Returns an initialized mine_score structure. Returns NULL if an error
* occurs.
*/
mine_score *init_score(mine_problem *prob, mine_parameter *param)
{
int i, j;
double B;
mine_score *score;
if ((param->alpha > 0.0) && (param->alpha <= 1.0))
B = MAX(pow(prob->n, param->alpha), 4);
elseif (param->alpha >= 4)
B = MIN(param->alpha, prob->n);
else
goto error_score;
score = (mine_score *) malloc (sizeof(mine_score));
if (score == NULL)
goto error_score;
score->n = MAX((int) floor(B/2.0), 2) - 1; задали кол-во строк, ок
score->m = (int *) malloc(score->n * sizeof(int)); а кол-во столбцов тут чему равно? кол-ву строк?if (score->m == NULL)
goto error_score_m;
for (i=0; i<score->n; i++)
score->m[i] = (int) floor((double) B / (double) (i+2)) - 1;
score->M = (double **) malloc (score->n * sizeof(double *));
if (score->M == NULL)
goto error_score_M;
for (i=0; i<score->n; i++)
{
score->M[i] = (double *) malloc ((score->m[i]) * sizeof(double)); а здесь идет просто выделение памяти для матриы М?if (score->M[i] == NULL)
{
for (j=0; j<i; j++)
free(score->M[j]);
goto error_score_M_i;
}
}
return score;
error_score_M_i:
free(score->M);
error_score_M:
free(score->m);
error_score_m:
free(score);
error_score:
returnNULL;
}
typedefstruct mine_score
{
int n; /* number of rows of M */int *m; /* number of cols of M[i] for each i */double **M; /* the (equi)characteristic matrix */
} mine_score;
score->n = MAX((int) floor(B/2.0), 2) - 1; задали кол-во строк, ок
score->m = (int *) malloc(score->n * sizeof(int)); а кол-во столбцов тут чему равно? кол-ву строк?
score->M[i] = (double *) malloc ((score->m[i]) * sizeof(double)); а здесь идет просто выделение памяти для матриы М?
有内存区域,有存储在其他内存区域的内存区域的指针
然后,只要大脑能够感知,就会有一个等级制度。
此外,装配人员的插入也非常多。
我部分收回,从18:00开始看,是的,他们不写asm,但修复已经编译的代码 - 那么它是合乎逻辑的。
据我所知,现代编译器与汇编器的插入所做的只是对asm的模仿,也就是说,在这样的形式下,asm的插入并没有进入编译后的代码,要真正优化asm代码,足以在调试器中重写asm的代码部分--IMHO。
有内存区域,有存储在其他内存区域的内存区域的指针
然后,只要大脑能够感知,就会有一个等级制度。
是的,而且不跟踪一个链接是否活着,爬到已经被另一个进程使用的长期释放的内存部分,破坏一切,这也很酷))))。
是的,而且它也很酷,不会跟踪一个链接是否活着,也不会爬进一个早已释放的内存空间,而这个空间已经被另一个进程使用,并破坏一切))))。
真是一个童话,这只有在Windows 3.*中才能实现。Windows不会让你进入别人的进程内存,每个进程都在自己的区域工作,对它来说,内存寻址从零开始,这就是Windows对它的介绍。而一般来说,Windows只有在真正写入数据时才会分配内存。做一个数组 double arr[1024*1024*1024],看看任务管理器中实际分配了多少内存。但根本不是这样的!在你真正开始向数组写东西之前,内存不会以4Kb块的形式分配。即使你用随机的索引来写,它仍然会在这样的块中。Windows是如何将这一切虚拟化的,对我来说是深不可测的!
Windows是如何将这一切虚拟化的,对我来说是深不可测的!
我不想去谷歌,但随着Pentium-1的出现,处理器有了内存段描述符和虚拟内存,也就是说,很可能是硬件级的虚拟化,而Windows巧妙地使用了它
真是一个童话,这只有在Windows 3.*中才能实现。Windows不会让你进入别人的进程内存,每个进程都在自己的区域工作,对它来说,内存寻址从零开始,这就是Windows对它的介绍。而一般来说,Windows只有在真正写入数据时才会分配内存。做一个数组 double arr[1024*1024*1024],看看任务管理器中实际分配了多少内存。但根本不是这样的!在你真正开始向数组写东西之前,内存不会以4Kb块的形式分配。即使你用随机的索引来写,它仍然会在这样的块中。Windows是如何将这一切虚拟化的,对我来说是深不可测的!
三号没有虚拟化,它是一个不同的系统,不是NT。那里面有很多DOS的尾巴,一半的系统功能都依赖于int 21。
这个案例并不清楚。
此外,在f-i中,矩阵M的大小也有变化。
也就是说,按照我的理解,这些乱七八糟的东西只是为了给矩阵分配内存,但它并没有填充任何数值?因此,对于mql来说,这段代码可以被抛出(好吧,在确定了方形矩阵的行数和相同的列数之后)。
或者用一些值对矩阵进行初始化
......风控系统是如何将这一切虚拟化的,对我来说是深不可测的!
阅读里希特。他把这一切都嚼碎了,以至于伤害了你的心。
SeriousRacoon:
顺便说一下,有趣的洞,我得看看是否有可能以这种方式崩溃服务器
你不能。
这个案例并不清楚。
score->n = MAX((int) floor(B/2.0), 2) - 1; задали кол-во строк, ок score->m = (int *) malloc(score->n * sizeof(int)); а кол-во столбцов тут чему равно? кол-ву строк?score->M[i] = (double *) malloc ((score->m[i]) * sizeof(double)); а здесь идет просто выделение памяти для матриы М?此外,在f-i中,矩阵M的大小也有变化。
也就是说,按照我的理解,这些乱七八糟的东西只是为了给矩阵分配内存,但它并没有填充任何数值?因此,对于mql来说,这段代码可以被抛出(好吧,在确定了方形矩阵的行数和相同的列数之后)。
或者,毕竟矩阵是用一些值初始化的
在mine_score 中,*m是一个int的指针,注释中说它是一个数组,所以每一行有不同的列数,它被称为 "梳状数组 "而不是矩形。
score->m = (int *) malloc(score->n * sizeof(int))它只是为这个行长数组分配了内存,没有值
对于矩阵M本身。
这里是分配给行的指针的内存
score->M[i] = (double *) malloc ((score->m[i]) * sizeof(double)); а здесь идет просто выделение памяти для матриы М?和这里的专栏