2017-10-11 11 views
3

Quelle est la différence entre: new int*[] et new (int*)[]:Différence entre le nouveau (float *) [] et le nouveau flotteur * []

int** pA = new int*[2] // returns a pointer to an array of pointers to int. 

new (int*)[2] // what should this return ? Shouldn't it be same as the above. 

De même,

float* pB1 = new float[3]; // compiles successfully. 

float* pB2 = new (float)[3] //Gives an error. Shouln't it return an array of floats ? 

Mais, le compilateur dit:

A value of type 'float' cannot be used to initialize a value of type float* . 

Qu'est-ce qui me manque ici? J'utilise VS2015 Community IDE.

+0

vous demandez un placement nouveau; l'appel est compris comme un pointeur passé à nouveau; voir https://stackoverflow.com/questions/222557/what-uses-are-for-placement-new – OznOg

+0

http://fr.cppreference.com/w/cpp/language/new – Barry

+1

@OznOg, vous devriez étendre le commentaire à une réponse complète. –

Répondre

6
float* pB1 = new float[3]; 

est l'attribution d'un tableau de float

float* pB2 = new (float)[3] 

est demander d'allouer un tableau de ?? dans l'emplacement 'float' (qui n'a pas de sens), c'est l'erreur que vous obtenez. Ceci est la nouvelle syntaxe de placement, voir plus d'informations ici Difference between new (float*)[] and new float*[] ou http://en.cppreference.com/w/cpp/language/new comme souligné dans les commentaires

+5

votre réponse contient un débordement de pile – geza