我试图通过不在循环中使用malloc来提高性能。由于数组的大小几乎总是相同的,所以我试图使用一个堆栈变量,只有当数组太大时才替换它。不幸的是,这似乎不是我得到的行为。
这是我的暗号。这里有什么明显的问题吗。
double *A
if(n>1024){
A = malloc( n * sizeof( *A ) );
if( !A ) {
fprintf( stderr, "Failed to allocate phi in calculate_forces()\n" );
exit( EXIT_FAILURE );
}
}
else{
double a[1024];
A=a;
}
最佳答案
如果你在VisualC++中,你可以使用_malloca/_freea
一对函数在一个阈值(恰好是你的-1K)的基础上自动在堆栈和堆分配之间切换。如果你在另一个编译器上,你可以创建你自己的等价物。