簡體   English   中英

操作函數中的int數組時出現堆棧粉碎錯誤

[英]Stack smashing error when manipulating array of ints in function

因此,我試圖制作一個簡單的程序,該程序采用部分填充的數組,並在開頭添加一個整數,以將所有現有元素向右移動。 看來我在這里所添加的內容正確地進行了移位,但是一旦所有代碼執行完畢,我就會得到堆棧粉碎檢測到的錯誤。

這是我的代碼:

#include <stdio.h>

void addCommand(int *, int, int);

void main() {
    int i;
    int list[10];
    list[0] = 1;
    list[1] = 5;

    printf("Before add:\n");
    for (i = 0; i < 2; i++) {
        printf("%d\n", list[i]);
    }

    addCommand(list, sizeof(list), 4);

    printf("Adding 4:\n");
    for (i = 0; i < 3; i++) {
        printf("%d\n", list[i]);
    }
}


void addCommand(int *arr, int size, int new) {
    int k;
    printf("%d", arr[0]);   
    for (k = size - 1; k >= 0; k--) {
         if (&arr[k] != NULL) {     
            if (k > 0) {        
                arr[k] = arr[k-1];
            } else {
                arr[k] = new;
            }
        }   
    }   
}

這是輸出:

在此處輸入圖片說明

如果有人指出我在這里做錯了,將不勝感激!

addCommand(list, sizeof(list), 4);

上一行未通過列表數組中元素的數量。 您必須執行以下操作:

sizeof(arr)/sizeof(arr[0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM