尝试访问指向节点的指针时出现分段错误

如何解决尝试访问指向节点的指针时出现分段错误

我试图在Node结构中初始化一个元素,但是每当我尝试访问它时,我都会遇到分段错误。我已经在Stack类中初始化了Node,但是无法在其上插入元素。

Stack.h

#ifndef QUEUE_H
#define QUEUE_H

struct Node;

// Pilha de números inteiros.
class Stack {
public:
    // Representa uma exceção que ocorre quando a pilha está vazia.
    class EmptyException {};

    // Constrói uma pilha vazia.
    Stack();

    // Insere um elemento no topo da pilha.
    void push(unsigned elem);

    // Retorna o elemento no topo da pilha.
    // Lança EmptyException caso a pilha esteja vazia.
    unsigned top() const;

    // Remove o elemento no topo da pilha.
    // Lança EmptyException caso a pilha esteja vazia.
    void pop();

    // Retorna o número de elementos na pilha.
    unsigned count() const;
private:
    Node* _top{};
    unsigned _count;
};

#endif

Stack.cpp-分段错误发生在第10行

#include "Stack.h"

struct Node {
    unsigned elem{};
    Node * next{};
};

Stack::Stack() {
    this->_count = 0;
    this->_top->elem = 0; // This is where the segmentation fault is occurring
}

void Stack::push(unsigned elem) {
    this->_top->elem = elem;
    this->_count++;
}

void Stack::pop() {
    // TODO.
}

unsigned Stack::top() const {
    return 0;
}

unsigned Stack::count() const {
    return 0;  // TODO.
}

Screenshot of lines of code and variables

解决方法

在您的Stack类的构造函数中,在初始化任何有意义的东西之前,您正在使用(取消引用)top_成员指针。由于它的值可能是某种垃圾,因此您尝试访问未为您的进程设置的虚拟内存段中的地址。这样就会出现“分段错误”。

如何避免这种情况?

  1. 在启用警告的情况下编译代码。然后,编译器会告诉您有关未初始化值的使用。
    有关为何应启用警告的更多信息,请阅读以下SO问题:
    Why should I always enable compiler warnings?
  2. 最好在初始化列表中按顺序初始化类的成员。
    有关为何应使用初始化列表的讨论,请阅读以下SO问题:
    Why should I prefer to use member initialization lists?
  3. 在您的特定类中-当堆栈的顶部元素不存在时,请不要尝试为其设置值。即top_的正确初始化是对nullptr的尝试-尝试取消引用它仍然会崩溃。

您可能还需要考虑(这些不是建议,只是想法):

  1. 使用std::unique_ptr代替原始指针。这将为您提供异常而不是硬崩溃,再加上您绝不会错误地泄漏内存。
  2. 为堆栈使用非列表式结构(例如,更像是std :: vector)。由于除了弹出之外,您不对堆栈的内容进行任何迭代,因此您不必担心重新分配后迭代器会失效。
  3. 使用std::stack(除非这是编程练习,在这种情况下不要紧)。
,

通过使用 myData <- structure(list(V1 = structure(c(17L,18L,2L,11L,1L,14L,16L,12L,15L,13L),.Label = c("","1999","1999Dec","1999Nov","1999Q3","2000","2000Dec","2000Nov","2000Q3","2003","2003Dec","2003Q4","ASSUMPTIONS","CORE INFLATION EXPECTATIONS; YEAR-ON-YEAR CHANGE IN CORE","EXPECTED UNEMPLOYMENT RATE; PERCENTAGE OF LABOUR FORCE","GROWTH EXPECTATIONS; YEAR-ON-YEAR CHANGE IN REAL GDP","INFLATION EXPECTATIONS; YEAR-ON-YEAR CHANGE IN HICP","TARGET_PERIOD" ),class = "factor"),V2 = structure(c(1L,68L,10L,17L,64L,65L,66L,67L,1L),"1","10","11","14","16","17","18","19","2","20","23","24","26","28","29","3","31","32","33","34","35","36","37","38","39","4","40","43","45","46","47","5","50","52","53","54","55","56","59","6","60","61","62","63","64","65","67","68","7","70","71","72","73","76","85","86","87","88","89","9","90","91","92","93","94","95","FCT_SOURCE"),V3 = structure(c(1L,96L,13L,62L,28L,23L,55L,59L,31L,29L,34L,91L,".25",".28",".3",".4",".5",".53",".6",".64",".68",".7",".71",".8",".9",".97","1.1","1.2","1.3","1.33","1.38","1.4","1.5","1.53","1.6","1.7","1.8","1.9","10.1","10.2","10.3","10.4","10.5","10.6","10.7","10.73","10.78","10.8","10.9","11.02","11.1","11.16","11.2","11.22","11.24","11.3","11.4","11.5","11.6","11.7","11.9","12","2.02","2.04","2.1","2.2","2.25","2.26","2.3","2.31","2.36","2.37","2.4","2.5","2.6","2.7","2.75","2.8","2.9","3.1","3.2","7.7","7.8","8","8.1","8.3","8.5","8.6","8.75","8.8","9.2","9.3","9.39","9.4","9.43","9.5","9.6","9.7","9.8","9.9","POINT"),V4 = structure(c(1L,57L,43L,58L,32L,".1001001",".2004008",".29910269",".69375619",".999001","0","1.01010101","1.18694362","1.3986014","1.49700599","1.98019802","1.998002","11.11111111","15","2.02020202","2.97029703","21","3.5","3.5892323","3.96039604","30","37.9","4.54545455","4.60921844","4.95049505","5.05050505","5.08982036","5.09490509","5.5","T0_0","T9_0" ),V5 = structure(c(1L,86L,84L,54L,87L,33L,".6006006",".82378943",".99009901","1.2012012","1.29611167","10.37067461","13","18.28171828","18.8","2.00400802","2.27948464","2.52525253","21.21212121","22","22.22222222","24.5","25","26.9","29.9","3.03030303","3.26409496","3.35353113","3.7","34.34343434","4.5","4.7","4.76602183","4.8951049","40.59405941","43.56435644","5.26315789","5.55555556","5.69430569","5.94059406","6.08175474","6.1","6.2","6.41751201","6.5277921","6.78642715","7.14360752","7.19280719","7.92079208","75","8.08080808","8.4","8.68263473","8.91089109","9.09090909","F0_0T0_4","F9_0T9_4"),V6 = structure(c(1L,103L,41L,61L,81L,26L,73L,104L,5L,74L,8L,49L,".5988024",".98","1.93814019","10.22044088","11.46560319","11.47704591","12.05599666","12.68731269","13.31830865","13.40105912","14.1","14.2","14.61461461","14.6609717","14.8","15.84158416","16.16161616","17.08291708","17.22870049","17.3","18.3046303","18.58141858","2.4024024","21.05263158","21.3","22.9","25.64870259","27.1","29.29292929","3.0223655","3.48953141","3.76610505","32.1","32.57007906","33.86613387","36.36363636","38.38383838","4.45103858","4.70753205","48.51485149","49.49494949","51.48514851","6.06060606","7.29355033","7.3","7.51503006","8.80903491","80","F0_5T0_9","F9_5T9_9" ),V7 = structure(c(1L,112L,102L,95L,35L,36L,7L,113L,72L,"10.92184369","11.38613861","12.5","12.76180698","12.87128713","13.13131313","13.86138614","14.64646465","14.83150891","15.78947368","15.86826347","16.5","16.94915254","17.82178218","18.18181818","18.4","18.5","20.79207921","21.42018153","22.4","22.74937858","23.17682318","23.23232323","23.4","23.5","23.87612388","23.9134977","24.24242424","24.27","24.76100431","24.8","25.8","26.26262626","26.50190878","26.55310621","26.6","27","27.87460039","28.2","28.97102897","30.5","31.36863137","33.33333333","34.83033932","37.04692474","4.19161677","40.1","42.5","44.04404404","44.44444444","45.29246795","45.45454545","47.36842105","5.7","6.49728861","7.50750751","7.63131814","7.91295747","7.91859762","8.47457627","9.9009901","F1_0T1_4","F10_0T10_4" ),V8 = structure(c(1L,109L,4L,93L,89L,110L,77L,"100","11.48851149","11.96834817","12.12121212","12.38850347","12.9","13.7","14.12825651","14.93271741","15.34354221","15.46906188","15.55333998","15.9154325","16.01601602","16.30390144","16.4","16.78817127","16.83168317","17.96407186","18.2","18.81188119","19.64107677","20.1","21.77822178","21.78217822","21.9","21.95608782","23.16070475","23.3","24.1","24.39331863","25.5","25.6","26.02866866","26.46709175","26.7","27.27272727","27.47252747","29.07438362","31.3","33.43343343","34.76953908","36.84210526","38.29616235","52.63157895","55.55555556","58.89","7.07070707","F1_5T1_9","F10_5T10_9"),V9 = structure(c(1L,115L,78L,25L,114L,".2","12.48751249","14.85148515","14.9118284","15.18481518","15.23244313","15.3","15.34653465","15.48","16.23246493","16.45193261","16.46181322","16.46276025","16.56686627","17.5","17.6","17.8","17.84646062","18.35728953","18.53710625","18.68686869","19.19191919","19.8","2.0979021","20.07992008","20.64128257","21.03688933","21.0958608","21.68825742","22.01289543","22.05143661","22.72727273","23.42342342","23.49869452","23.76237624","26.31578947","27.72277228","29.74051896","3.00852244","33.66336634","38.1","38.88888889","47.5","53.53535354","6.38722555","6.40640641","6.5","7.5","F11_0T11_4","F2_0T2_4"),V10 = structure(c(1L,20L,94L,9L,".1",".1998002",".21562789",".3003003",".38",".89820359","10.98772023","11.52058792","12.4750499","12.66201396","12.8","15.7","16.32047478","16.41983258","16.73346693","17.839445","18.21355236","2.997003","20.2020202","23.38303445","25.34645511","26.4","27.77777778","3.9","4.2","5.0331525","5.11022044","5.22842116","54.54545455","6.4","7.4","7.60584095","8.09190809","8.19180819","9.91433347","F11_5T11_9","F2_5T2_9"),V11 = structure(c(1L,70L,44L,69L,".0998004",".3996004",".501002","1.12405899","10.89108911","11.88118812","12.9258517","13.1","14.73788328","15.75817641","15.77591758","15.93429158","18.37598227","18.72866037","2.40571489","3.6","4.7952048","4.81580352","6.56565657","7.07876371","7.68463074","F12_0","F3_0T3_4"),V12 = structure(c(1L,47L,48L,".2997003","11.17705242","11.39742319","4.68594217","5.25","6.08782435","6.16232465","7.27623954","7.9","9.05804378","9.6201232","9.94358251","F3_5","F3_5T3_9"),V13 = structure(c(1L,"11.7938553","13.7487636","3.003003","4.78564307","F4_0"),class = "factor")),row.names = c(1L,3L,395L,396L,397L,398L,399L,400L,401L,402L,403L,404L,405L,406L,407L,797L,798L,799L,800L,801L,802L,803L,804L,805L,1198L,1199L,1200L,1201L),class = "data.frame") 初始化指针来解决

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-