gpt4 book ai didi

c - 如何避免分配到堆

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:18 25 4
gpt4 key购买 nike

我试图通过不在循环中使用 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;
}

最佳答案

你少了一个大括号,因此改变了实现的逻辑

double *A
if(n>1024){
A = malloc( ng * sizeof( *phi ) );
if( !phi ) {
fprintf( stderr, "Failed to allocate phi in calculate_forces()\n" );
exit( EXIT_FAILURE );
}
} // this is the brace you need to add <<<<<<<<<<<<<<<<<
else{
double a[1024];
A=a;
}

编辑:

您的代码还有其他问题,例如将 a 分配给 A,其中 a 的生命周期比 A,无法判断您是否需要调用 free,使用 nng 而不是其中一个 - 可能是一个错误,并且可能还会混淆 phiA

关于c - 如何避免分配到堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com