[英]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.