Libérant des chaînes de caractères en C

Si je voulais écrire:

char *a=malloc(sizeof(char)*4);
a="abc";
char *b="abc";

ai-je besoin de libérer cette mémoire, ou est-il fait par mon système?

  • Une autre observation est que je crois que vous n'avez pas besoin sizeof(char) depuis dans toutes les implémentations j'ai vu jusqu'à présent c'est toujours de 1 octet. Donc malloc(4); il suffirait d'une
  • en fait au-dessus de la mise en œuvre est bonne. Bien que la plupart des systèmes utilisent un octet caractères, la mise en œuvre au-dessus de la laisse clairement ce qui est alloué, et si le code est modifié pour utiliser unichars, qui sont généralement de deux octets, alors il sera plus facile de changer.
  • J'ai peur, je ne suis pas sûr de ce que exactement un unichar est, mais je suppose que cela a à faire avec unicode. Une rapide recherche sur google suggère objective-c qui est une autre langue 😛 Mais tous les caractères unicode ne sont généralement pas appelé tout à l'omble chevalier. Prendre caractères larges wchar_t par exemple. Peut-être tort, mais c'est ce que j'ai vu jusqu'à présent avec les implémentations j'ai traité avec
  • Oui, un unichar est un caractère Unicode, mais le concept n'est pas spécifique à l'objective-C. En général n'est pas une bonne idée de faire des hypothèses sur la taille des structures de données.
InformationsquelleAutor Andna | 2012-04-08