這段代碼對於n有好處< 20,但是對於n = 40給我訪問衝突錯誤: 這段代碼會隨機填充X和O.隨機填充2d陣列
int i=0,j=0;
int x=0,y=0;
int n=40;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
arr[i][j]='O';
}
srand(clock());
for(i=0;i<n*n;i++)
{
x = rand()%n;
y = rand()%n;
if(arr[x][y] == 'O') arr[x][y]='X';
}
聲明:本
arr = (char**)malloc(n);
for(i=0;i<n;i++)
arr[i] = (char*)malloc(n);
爲什麼不值只是隨機設置爲' X'或'O'在第一個循環中? – CanSpice
我們是否也可以看到你的'arr'聲明? – Drahakar
我討厭二維數組malloc。我從來沒有做對。我的猜測是,沒有任何東西強迫malloc以保持內存連續,所以它會隨機失敗。 –