Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C语言中处理内存分配_C - Fatal编程技术网

如何在C语言中处理内存分配

如何在C语言中处理内存分配,c,C,我是C语言的新手,我正在创建一个简单的程序,在这个程序中,我正在向多维错误写入值。但是我遇到了错误分段错误,或者在运行无限循环中的代码时遇到了错误分段错误 int main(){ int i,j; int num1=10; int num2=10; double data[num1][num2]; for(i=0;i<=num1;i++){ for(j=0;j<=num2;j++){ if(i==0) {

我是C语言的新手,我正在创建一个简单的程序,在这个程序中,我正在向多维错误写入值。但是我遇到了错误分段错误,或者在运行无限循环中的代码时遇到了错误分段错误

int main(){
int i,j;
int num1=10; 
int num2=10; 
double data[num1][num2];


    for(i=0;i<=num1;i++){
        for(j=0;j<=num2;j++){
            if(i==0) {
                data[i][j]=121.21;
            }
            else {
                data[i][j]=0.0;
            }
        }
    }
}
当我在以下结构上对值进行硬编码时,工作正常: 更改双数据[num1][num2];将数据翻一番[10][10]


如何在C中解决此问题。

您的循环超出了数组的边界:

for(i=0;i<=num1;i++){
    for(j=0;j<=num2;j++){

您正在超出循环中数组的边界:

for(i=0;i<=num1;i++){
    for(j=0;j<=num2;j++){

看起来你正在检查程序允许你访问的内存。您正在为100个值10*10分配内存。但是,在大多数编程语言中处理数组时,重要的是要知道索引0计数为1,这样就可以从数组[0]-数组[9]开始,因为在大多数编程语言中,我们从0开始,这意味着声明一个具有10个点的内存的数组

修复此代码的干净方法是:

for (int i=0; i < num1; i++) {
    for (int j=0; j < num2; j++ {

这将避免访问索引10中未分配的内存位置。

您似乎正在检查程序允许您访问的内存。您正在为100个值10*10分配内存。但是,在大多数编程语言中处理数组时,重要的是要知道索引0计数为1,这样就可以从数组[0]-数组[9]开始,因为在大多数编程语言中,我们从0开始,这意味着声明一个具有10个点的内存的数组

修复此代码的干净方法是:

for (int i=0; i < num1; i++) {
    for (int j=0; j < num2; j++ {
这将避免访问未分配的索引10处的内存位置