首页 > 后端开发 > C++ > 如何为C中包含字符串的结构正确分配内存?

如何为C中包含字符串的结构正确分配内存?

DDD
发布: 2024-12-01 09:47:12
原创
642 人浏览过

How to Correctly Allocate Memory for Structures Containing Strings in C  ?

使用 Malloc 分配包含字符串的结构

尝试使用 malloc() 管理包含 std::string 成员的结构的内存时,会出现段错误可能会发生。这是因为 malloc() 提供原始内存分配而不是构造对象。

使用 new 进行对象分配

使用 std::string 为结构正确分配内存成员,使用 new 而不是 malloc()。 new 会自动在分配的内存中构造对象。

示例:

#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
}
登录后复制

原始内存管理的放置 new

如果已经使用malloc()分配了内存,则可以使用placement new来构造该对象

示例:

void *ex_raw = malloc(sizeof(example));
example *ex = new(ex_raw) example; // Construct the object in allocated memory using placement 'new'
登录后复制

但是,在对象构造中,直接使用 new 通常优于放置 new。

以上是如何为C中包含字符串的结构正确分配内存?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板