C++ 在C++;

C++ 在C++;,c++,pointers,C++,Pointers,我一直在寻找解决这个布尔指针引用问题的方法,但无法找到解决方案。我知道C++在使用指针和引用时变得复杂。 下面的代码片段使用类似流的引用bool*,我想将temp5值(即true)分配给bool*,一直到temp并打印它。然而,这最终导致了分段错误。想知道在这种情况下,指针和引用出现了什么问题,或者我遗漏了什么。谢谢大家! #include <iostream> int main() { bool* temp= nullptr; bool* temp2; bool* t

我一直在寻找解决这个布尔指针引用问题的方法,但无法找到解决方案。我知道C++在使用指针和引用时变得复杂。 下面的代码片段使用类似流的引用
bool*
,我想将temp5值(即
true
)分配给bool*,一直到temp并打印它。然而,这最终导致了分段错误。想知道在这种情况下,指针和引用出现了什么问题,或者我遗漏了什么。谢谢大家!

#include <iostream>

int main()
{
  bool* temp= nullptr;
  bool* temp2;
  bool* temp3;

  temp2 = temp;
  temp3=temp2;

  bool temp5 = true;
  *temp3 = temp5;

  std::cout << *temp <<std::endl;

  return 0;
} 
#包括
int main()
{
bool*temp=nullptr;
bool*temp2;
bool*temp3;
temp2=temp;
temp3=temp2;
bool temp5=真;
*temp3=temp5;

std::cout您的
temp3
未初始化。取消引用它可能会导致访问冲突。而
temp
nullptr
,也禁止取消引用它(特别是通过指针分配)。换句话说,您有大量指针,但它们都指向任何地方

此外,这段代码实际上应该做什么还不清楚。 你想要这样的东西吗

int main()
{
  bool value = false;

  bool* temp= &value;
  bool* temp2;
  bool* temp3;

  temp2 = temp;
  temp3=temp2;

  bool temp5 = true;
  *temp3 = temp5;

  std::cout << *temp <<std::endl;

  return 0;
}
intmain()
{
布尔值=假;
布尔*温度=&值;
bool*temp2;
bool*temp3;
temp2=temp;
temp3=temp2;
bool temp5=真;
*temp3=temp5;

std::cout您的
temp3
未初始化。取消引用它可能会导致访问冲突。而
temp
nullptr
,也禁止取消引用它(特别是通过指针分配)。换句话说,您有大量指针,但它们都指向任何地方

此外,这段代码实际上应该做什么还不清楚。 你想要这样的东西吗

int main()
{
  bool value = false;

  bool* temp= &value;
  bool* temp2;
  bool* temp3;

  temp2 = temp;
  temp3=temp2;

  bool temp5 = true;
  *temp3 = temp5;

  std::cout << *temp <<std::endl;

  return 0;
}
intmain()
{
布尔值=假;
布尔*温度=&值;
bool*temp2;
bool*temp3;
temp2=temp;
temp3=temp2;
bool temp5=真;
*temp3=temp5;

std::cout您正在将值赋给
nullptr
。这就是导致分段错误的原因

只需更换线路

bool* temp = nullptr;
用这个

bool* temp= new bool;
现在可以了


不要忘记使用
delete
操作符删除它。

您正在为
nullptr
赋值。这就是导致分段错误的原因

只需更换线路

bool* temp = nullptr;
用这个

bool* temp= new bool;
现在可以了



不要忘记用
delete
操作符删除它。

或者仅仅
temp3=&temp5
?@Ben temp3=&temp5也导致了seg故障。这种行为可以解释吗?@isurarirmal:
temp3=&temp5
是一种非常有效的操作,它将
temp5
变量的地址存储在
temp3
指针中特定线路导致seg故障?我肯定不是这一条。
temp3=&temp5
导致一台机器出现seg故障(
*temp3=temp5
在那台机器上运行良好),但在另一台机器上运行良好。(那台机器取消引用不起作用)造成这种情况的原因是什么?编译器版本?或者仅仅是
temp3=&temp5
?@Ben temp3=&temp5也导致了seg故障。可以解释这种行为吗?@IsuraNirmal:
temp3=&temp5
是在
temp3
指针中存储
temp5
变量地址的一种非常有效的操作。具体哪一行导致seg故障的原因?我肯定不是这台。
temp3=&temp5
导致一台机器出现seg故障(
*temp3=temp5
在那台机器上运行良好),但在另一台机器上运行良好。(那台机器取消引用不起作用)造成这种情况的原因是什么?编译器版本?@Violet Giraffe谢谢,更正了我的回答谢谢。这很有效。对于这个
新bool
,有点新。谢谢你提到内存泄漏。我认为删除它应该可以解决它。@Isurairmal一旦你有信心这样做,请阅读
unique\ptr
。它可能看起来在这个阶段有点高级,但这是避免内存泄漏的推荐方法。@Violet Giraffe谢谢,更正了我的回答谢谢。这很有效。对这个
new bool
有点陌生。谢谢你提到内存泄漏。我认为删除它应该可以解决它。@IsuraNirmal一旦你有信心这样做,请阅读
UNIQUYGPTR 。在这个阶段,它可能看起来稍微先进,但是它是避免内存泄漏的推荐方法。我这里没有引用。@ LeNNESSRACESEN轨道:我想那是一个英文单词,而不是C++单词:P. S.是来自星际迷航事业的VulCAN女孩,在你的化身?…@ VioletGiraffe:是我!(是的)我看不到这里的引用。@ LexnasraceSeNe轨道:我想那是一个英语单词,而不是C++单词:P. S.是来自星际迷航事业的VulCAN女孩,你的化身?…@ VioletGiraffe:是我!