Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays &***检测到堆栈崩溃***:./a.out终止中止(堆芯转储)“-阵列内插_Arrays_Insertion - Fatal编程技术网

Arrays &***检测到堆栈崩溃***:./a.out终止中止(堆芯转储)“-阵列内插

Arrays &***检测到堆栈崩溃***:./a.out终止中止(堆芯转储)“-阵列内插,arrays,insertion,Arrays,Insertion,我在Internet上使用以下代码在数组中插入一个元素。我的问题是数组的大小如何增加​ 在第一次插入时,每次执行printing for循环时都会打印一个垃圾。我也很想知道我得到的错误的详细信息 代码是 #include <stdio.h> void main() { int k = 3, n = 5, i = 0, j = n; int LA[] = {1,3,5,7,8}; printf("The original array elements are

我在Internet上使用以下代码在数组中插入一个元素。我的问题是数组的大小如何增加​ 在第一次插入时,每次执行printing for循环时都会打印一个垃圾。我也很想知道我得到的错误的详细信息

代码是

#include <stdio.h>
void main() 
{
    int k = 3, n = 5, i = 0, j = n;
    int LA[] = {1,3,5,7,8};
    printf("The original array elements are :\n");
    for(i = 0; i<n; i++) {
        printf("%d ",LA[i]);
    }
    n = n + 1;
    while( j >= k){
        LA[j+1] = LA[j];
        j = j - 1;
    }
    LA[k] = 10;
    printf("\nThe array elements after insertion1 :\n");
    for(i = 0; i<n; i++) {
        printf("%d ",LA[i]);
    }
    n = n + 1;
    while( j >= k){
        LA[j+1] = LA[j];
        j = j - 1;
    }
    LA[k] = 20;
    printf("\nThe array elements after insertion2 :\n");
    for(i = 0; i<n; i++) {
        printf("%d ",LA[i]);
    }
    n = n + 1;
    while( j >= k){
        LA[j+1] = LA[j];
        j = j - 1;
    }
    LA[k] = 30;
    printf("\nThe array elements after insertion3 :\n");
    for(i = 0; i<n; i++) {
        printf("%d ",LA[i]);
    }
}

谢谢您的时间。

您已声明大小为5的数组LA

 int LA[] = {1,3,5,7,8};
稍后,您的代码尝试添加其他元素,但是,LA的大小仍然是5,因此您将值放置在尚未分配的数组空间中

然后,很可能会在堆栈上分配数组,并且由于您正在写入不属于数组的区域,因此会弄乱堆栈


超出LA大小的任何printf访问索引都将是内存中该位置的任何内容

错误的详细信息是堆栈已损坏。查阅“为了乐趣和利润而粉碎堆栈”。(免责声明:我还没有阅读代码)我认为程序只在第一个while循环中注销数组的末尾。然后,他只是从数组的末尾格式化printf。然后main尝试退出并意识到堆栈已损坏(尽管只有四个字节)。
 int LA[] = {1,3,5,7,8};