我看到了一個教程,其中講師動態分配記憶體n*int size(n事先不知道,用戶會將其作為輸入)。只是出于好奇,我將代碼從calloc(n,sizeof(int))to更改calloc(1,sizeof(int))為預期會出現錯誤,但我沒有遇到錯誤,并且代碼運行順利。
如果我增加指標并且它只是繼續沒有問題,我為什么要使用其他任何東西calloc(1,sizeof(int))呢?
#include <iostream>
using namespace std;
int main(){
int n;
printf("enter the size of array\n");
scanf("%d",&n);
int* A = (int*)calloc(1,sizeof(int));
for(int i=0; i<n; i ){
*(A i) = i 1;
}
for(int i=0; i<n; i ){
printf("%d\n", A[i]);
printf("%d\n", &A[i]);
}
// free(A)
return 0;
}
uj5u.com熱心網友回復:
我期待看到一個錯誤
你的期望被誤導了。如果您在分配的存盤區域之外訪問,則程式的行為是未定義的。不能保證您會收到錯誤。
不要訪問邊界之外的記憶體。避免未定義的行為。這很糟糕。程式壞了。
其他建議:避免calloc在 C 中使用。避免使用using namespace std;.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440921.html
