2010-08-05 11 views
2

A partir d'une fonction C++ gérée, je souhaite appeler une fonction non managée qui attend un 'const char *' en tant qu'argument.Ai-je besoin d'un pin_ptr pour passer une chaîne littérale?

Est-ce que a) et b) ci-dessous sont corrects? Pour b), est-ce que j'ai besoin de pin_ptr 'bonjour'? Qu'en est-il de a)? Merci.

a) myFunction("hello");

b)

char hello[10] ; 
strcpy(hello, "hello"); 
myFunction(hello); 

Répondre

0

Les deux sont très bien. Vous n'avez pas besoin d'un strcpy supplémentaire dans b) cependant, il suffit de faire:

char hello[] = "hello"; 
myFunction(hello); 

qui devient à peu près la même chose que a).

+0

Merci. Et pourquoi il n'y a pas besoin de les épingler? Parce qu'ils sont sur la pile? –

+1

Parce qu'ils ne sont pas alloués dynamiquement. a) est probablement en lecture seule partie du segment de données, b) est sur la pile. –