Nej, det är inte samma sak.
Det fungerar ungefär så här:
Exempel 1:
a[0-9] -> a[0-4] . int
Exempel 2:
b[50] -> int
I första exemplet skapar du 10 pekare som pekar på 5 integers. I andra exemplet skapar du 50 pekare som pekar på integers.
Det första exemplet är att föredra, eftersom du bara allokerar på heapen 10 gånger, mot 50 gånger i andra exemplet. Fast egentligen är de lika dåliga båda två. Det bästa är att inte allokera på heapen, eller att endast göra det en gång.
// Stacken
int a[10][5];
// Heapen (en allokering)
int (*b)[5] = new int[10][5];
Prestandamässigt så brukar det alltid löna sig att skapa en pool av någonting då man väl allokerar minne för att sedan ta av denna pool. Minnesallokering är rätt så krävande operation och det tar nog inte så mycket längre tid att allokera 1 byte eller 5 byte. Däremot tar det tid att allokera 1 byte 5 gånger istället för att allokera 5 byte 1 gång.
Ytterligare lite info (något som "normala" programmerare inte behöver tänka på), är om man allokerar stora mängder minne, så kan detta minne efter ett tag bli "utswappat" på hårddisken, och kan orsaka en liten tidsfördröjning när data skall "hämtas".
Detta är ytterst ovanligt, och dyker som sagt upp vid stora allokeringsmängder, och program som sällan anropar dessa.
/T
265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849