gpt4 book ai didi

c - 管理 C 中的内存,二维 float 组

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:47 24 4
gpt4 key购买 nike

我对 C 非常缺乏经验,不得不将它用于探索热传递的类(class)作业。

我遇到了各种关于 (0xC0000005) 返回码的错误。我知道这是越界访问内存的尝试,我可能无法在某处正确分配内存,但我一直无法弄清楚。

知道需要更改什么吗?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main(){

/* constant alpha squared, the area of the domain */
const float alphSqrd = 0.01;
const float deltX, deltY = 0.0002;
const float timeStep = 0.0000009;
const int maxTimeSteps = 1000;

int h, i, j;

/* 2D Array of Temperature Values */
float T [500][500];

float dTdt;

/* initialise temperature values */
printf("Initialising 2D array...\n");

for (i=0; i<500; i++){
for (j=0; j<500; j++){
if (150<=i && i<350 && 150<=j && j<350){
T[i][j] = 50;
} else {
T[i][j] = 20;
}
}
}

printf("Updating values...\n");

for (h=0; h<maxTimeSteps; h++){
for (i=0; i<500; i++){
for (j=0; j<500; j++){
dTdt = alphSqrd*(((T[i+1][j]-2*T[i][j]+T[i-1][j])/(deltX*deltX))+((T[i][j+1]-2*T[i][j]+T[i][j-1])/(deltY*deltY)));
T[i][j] = T[i][j] + dTdt * timeStep;
printf("%f ",T[i][j]);
}
printf("\n");
}
}

return 0;
}

最佳答案

虽然这不是您描述的问题,但一个问题是您没有初始化 deltX。而不是这个

const float deltX, deltY = 0.0002;

你想要

const float deltX = 0.0002 , deltY = 0.0002;

除此之外,您还有一个超出范围的问题。如果你要访问索引 i - 1i + 1,你不能从 0 循环到 499500 元素的数组上。

如果我像这样调整循环,它对我有用:

for (i = 1; i < 499; i++) {
for (j = 1; j < 499; j++) {

关于c - 管理 C 中的内存,二维 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54766487/

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