[c++] caricamento simboli con visual studio 2017

di Anonimizzato16677 il
3 risposte
Salve,
ho un problema durante il debug di un file, questo sotto è il codice che ho scritto per imparare i template di classe.
Quando lancio il debug si genera una eccezione per il mancato caricamento del file wntdll.pdb e si ferma.

Questo problema me lo da solo con visual studio, se copio questo codice in Dev C++, il debug funziona.
Se, con visual studio, lancio il debug di un altro programmino scritto da me, per esempio la prova per un template di funzione che ho fatto in precedenza tutto funziona.

Solo questo codice sotto non va..... ma non capisco perche!!!!
In allegato anche lo screenshot dell'errore

qualcuno mi può aiutare?

#include<iostream>
#include<ctime>
using namespace std;

template<typename T, int MAX>
class Elenco
{
public:
	Elenco()
	{
		elementi = MAX;
		ptr = new T(elementi);
		srand((unsigned int)time(0));
		for (int i = 0; i < elementi; i++)
		{
			ptr[i] = rand() % 100;
		}
	}

	~Elenco()
	{
		delete[] ptr;
	}

	void stampa()
	{
		for (int i = 0; i < elementi; i++)
		{
			cout << ptr[i] << " ";
			 if ((i+1) % 4 == 0) cout << endl;
		}
		cout << "\nfine";
	}

private:
	int elementi;
	T *ptr;
};

int main()
{
	Elenco<int, 10> elenco2;
	elenco2.stampa();
	return 0;
}

Allegati:
screenshot errore
screenshot errore

3 Risposte

  • Guarda che deve essere

    ptr = new T[elementi];

    e Visual Studio indica giustamente un errore di corruzione dell'heap, cosa che non fa DevC++ (da buttare)
  • Usa piuttosto std::unique_ptr e std::make_unique o std::vector
  • Grazie mille oregon.... ieri sera mi ci sono spaccato il cervello per quell'errore!!! corrette le [] tutto funziona correttamente.
    ora posso proseguire con i miei esercizi!!
Devi accedere o registrarti per scrivere nel forum
3 risposte