簡體   English   中英

動態數組是在沒有malloc的情況下分配的

[英]dynamic array is allocated without malloc

即使不使用malloc ,如何創建數組?

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

int main() {
    int n,i,*ptr,sum=0;
    printf("Enter number of elements: ");
    scanf("%d",&n);
    printf("Enter elements of array: ");

    for(i=0;i<n;++i)
    {
        scanf("%d",ptr+i);
        sum+=*(ptr+i);
    }

    printf("Sum=%d",sum);
    free(ptr);
    return 0;
}

數組不是“創建”的。 已聲明。 然后,它沒有定義或初始化。 你用吧。

未定義的行為。

如果您使用更嚴格的編譯器,那么您將獲得:

 warning: ‘ptr’ may be used uninitialized in this function [-Wmaybe-uninitialized]

因此,它實際上不是動態的

我認為,更大的問題是free(ptr)會發生什么:

這是可能的, 也是未定義的行為 由於您傳遞了未初始化的指針,因此該指針的值不明確。 可能是偶然的NULL但不僅限於此。

大圖:

訪問任何未初始化的變量將導致未定義的行為

編輯:

OP沒有聲明一個數組 ,而是一個整數指針。

暫無
暫無

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

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