gpt4 book ai didi

c++ - 删除 cout 会导致段错误

转载 作者:行者123 更新时间:2023-11-27 23:36:20 26 4
gpt4 key购买 nike

这是我的代码:

template <typename T>
struct Node
{
T info;
Node<T>* next;
};


template<typename T>
struct List
{
Node<T>* n;
int curr;
};

List<T> listCreate()
{
List<T> lst;
lst.curr = 0;
cout << lst.n->info;
lst.n->info = 0;
lst.n->next = NULL;
return lst;
}

如果我删除 cout << lst.n->info;它会导致段错误。我想要实现的是简单地创建一个列表并具有下一个值:

先:

  • curr = 0
  • n:
    • 信息 = 0
    • 下一个 = NULL

但我找不到实现此目的的方法,我尝试在谷歌上搜索并阅读有关指针和结构的内容,但我找不到问题所在。这可能是一个简单的问题,但我找不到它。

提前致谢。

最佳答案

您忘记初始化 lst.n。访问未初始化的内存或 nullptr 是未定义的行为。

你可以这样做:

List<T> listCreate()
{
List<T> lst;
lst.curr = 0;
// new code
lst.n = new Node<T>();
lst.n->next = nullptr;
// end
cout << lst.n->info;
lst.n->info = 0;
lst.n->next = nullptr;
return lst;
}

请考虑避免 NULL。您应该在 c++ 中使用 nullptr

关于c++ - 删除 cout 会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com