Maison >développement back-end >C++ >Comment allouer correctement la mémoire aux structures contenant des chaînes en C ?
Allocation de structures contenant des chaînes avec Malloc
Lors de la tentative de gestion de la mémoire pour une structure contenant des membres std::string à l'aide de malloc(), des erreurs de segmentation peut survenir. En effet, malloc() fournit une allocation de mémoire brute plutôt que de construire des objets.
Utiliser new pour l'allocation d'objets
Pour allouer correctement la mémoire pour une structure avec std::string membres, utilisez new au lieu de malloc(). new construira automatiquement l'objet dans la mémoire allouée.
Exemple :
#include <iostream> #include <string> struct example { std::string data; }; int main() { example *ex = new example; // Allocate memory using 'new' ex->data = "hello world"; std::cout << ex->data << std::endl; delete ex; // Release allocated memory when done }
Placement nouveau pour la gestion de la mémoire brute
Si la mémoire a déjà été allouée à l'aide de malloc(), il est possible d'utiliser le placement new pour construire l'objet dans cet emplacement. mémoire.
Exemple :
void *ex_raw = malloc(sizeof(example)); example *ex = new(ex_raw) example; // Construct the object in allocated memory using placement 'new'
Cependant, l'utilisation directe de new est généralement préférable au placement de new pour la construction d'objets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!