|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 903
|
[C++] malfunzionamento
#include <iostream>
using namespace std; const int N=3065663; int main() { int v[N]; for (int i=0;i<N;i++) { v[i]=i+1; } } ho fatto questo programma semplicissimo,viene compilato senza problemi ma crasha immediatamente come provo ad eseguirlo. sembra che il limite sia const int N=500000. sapreste dirmi dove sbaglio?
__________________
MB:Asus Rog Strix B450-F Gaming - Cpu:AMD Ryzen 5 2600 - RAM:2x8Gb DualCh DDR4-2400MHz Patriot Viper Elite - SkGrafica:msi GeForce GTX 1050Ti 4GB - SSD: 2 x Samsung 970 EVO 1TB nvme M.2 in RAID0 Alim: EVGA B3 750W Case: Corsair airflow 750D Ultima modifica di sobrano : 10-06-2010 alle 17:03. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
A prima vista, credo tu abbia raggiunto le massime dimensioni dello stack, meglio se usi new(), dato che stiamo parlando di C++, new usa l'heap.
A meno che sia un'altro il problema ma non credo... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 903
|
dunque devo lavorare con i puntatori?
__________________
MB:Asus Rog Strix B450-F Gaming - Cpu:AMD Ryzen 5 2600 - RAM:2x8Gb DualCh DDR4-2400MHz Patriot Viper Elite - SkGrafica:msi GeForce GTX 1050Ti 4GB - SSD: 2 x Samsung 970 EVO 1TB nvme M.2 in RAID0 Alim: EVGA B3 750W Case: Corsair airflow 750D |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
concordo, ma sempre meglio l'heap...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Il limite non come indirizzo, ma come dimensioni. Lo stack solitamente ha una grandezza di qualche megabyte, nell'heap puoi allocare molta più roba.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 903
|
qual'è quindi la sintassi corretta per allocare il mio array nell'heap?
__________________
MB:Asus Rog Strix B450-F Gaming - Cpu:AMD Ryzen 5 2600 - RAM:2x8Gb DualCh DDR4-2400MHz Patriot Viper Elite - SkGrafica:msi GeForce GTX 1050Ti 4GB - SSD: 2 x Samsung 970 EVO 1TB nvme M.2 in RAID0 Alim: EVGA B3 750W Case: Corsair airflow 750D |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Codice:
int v[] = new int[N]; // ... delete v;
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Codice:
delete [] v;
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
D'oh, hai ragione.
Quando il sonno è troppo e l'ora è tarda finisco col fare ste prodezze.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 903
|
non dovrebbe essere:
int* v[] = new int[N]; // ... delete v; che so io new restituisce un indirizzo...
__________________
MB:Asus Rog Strix B450-F Gaming - Cpu:AMD Ryzen 5 2600 - RAM:2x8Gb DualCh DDR4-2400MHz Patriot Viper Elite - SkGrafica:msi GeForce GTX 1050Ti 4GB - SSD: 2 x Samsung 970 EVO 1TB nvme M.2 in RAID0 Alim: EVGA B3 750W Case: Corsair airflow 750D |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
No, new crea un nuovo oggetto nell'heap, che poi sia effettivamente un puntatore o no dipende dai casi. Nel caso di un vettore non serve.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:49.




















