c++ - 在二叉搜索树中初始化字符串数组

标签 c++ c string tree binary-search-tree

我的节点包含一个 int 和一个字符串变量,我尝试使用二叉搜索树。代码如下:

struct node{
int a;
string members[5];
};

int main(){
node * root = NULL;
root = (node*)malloc(sizeof(node));
root->members[0] = "aaaaa";
return 0;
}

当然,我的代码并不完全像那样,我在 main 中缩短了代码,因为我只想展示问题所在。它给了我“访问冲突写入位置”。我尝试使用“新节点();”而不是 malloc 并且那没有发生。这是为什么?

最佳答案

malloc() 只分配内存。它不调用对象的构造函数。您可以使用例如

在分配的内存上调用构造函数
void* mem = malloc(sizeof(node));
if (mem) {
    node* root = new(mem) node;
    // ...
}

当使用 new node 而不是 malloc(sizeof(node) 时,分配的内存也会被初始化。使用未初始化的对象是未定义的行为。

关于c++ - 在二叉搜索树中初始化字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813096/

相关文章:

c# - MeasureString 忽略 Arial 和 Times New Roman 的字体样式

python - 给定一个句子,返回一个单词颠倒的句子

C++ 成员变量别名?

c++ - 开源虚拟机

c++ - 这两种寻址方式有什么区别

c++ - 这个流命令如何在 C++ 中读取整个文件?

c - 为什么 malloc() 可以互换调用 mmap() 和 brk()?

c - 陷休眠眠状态(1.)

c - "invalid type argument of unary ' *' C

Python如何从变量的argparse中获取值,而不是变量的名称?