(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式

这篇具有很好参考价值的文章主要介绍了(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式,C++,c++,c#,c

 上述报错困扰了我好几天,在网上搜了一天,到最后还是没有解决问题

试过通过项目属性->C/C+±>代码生成->启用增强指令集->选择AVX,这种方法也没用

但问题出现在创建对象时内存分配问题上

方法一:

(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式,C++,c++,c#,c

 如果是这样创建对象,并且写了析构函数会报错,把析构函数删去之后程序就能正常运行了。

方法二:

创建对象的方式改为这样,程序也可以正常运行了

(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式,C++,c++,c#,c

 

复习一下创建对象的四种方式

给定类的定义如下

class Test{
    private:
        int a;
    public:
        Test();
        ~Test();
}

 方式一:栈中分配内存,隐式调用构造函数;

Test A;

方式二:栈中分配内存,显式调用构造函数;

Test test = Test();

方式三:堆内存中分内存,使用new关键字显式调用构造函数;

Test *test = new Test;
delete Test;

方式四:其他

  • 很不常用的情况:利用对象指针;但在栈中分配内存(本质和前面两种一样,不过多了一个对象指针来操作而已)
// 很不常用的情况:利用对象指针;但在栈中分配内存
(本质和前面两种一样,不过多了一个对象指针来操作而已)
Test test1;
Test *test2 = &test1;

注意点:

注意1【普通对象(方式1/2)与对象指针(方式3/4)区别】
  • 方式1/2/4:使用完后不需要手动释放,该类析构函数会自动执行
  • 方式3:new申请的对象,则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。【new和delete必须配合使用
注意2【普通对象(方式1/2)与对象指针(方式3/4)访问类中成员的区别】:
  • 创建对象以后,可以使用点号.来访问成员变量和成员函数,这和通过结构体变量来访问它的成员类似
  • 有了对象指针后,可以通过箭头->来访问对象的成员变量和成员函数,这和通过结构体指针来访问它的成员类似
注意3【关于方式3和方式4的说明】:
  • 在栈上创建出来的对象都有一个名字,比如 test1,test2,使用指针指向它不是必须的。
  • 但是通过 new 创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。
  • 也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。
注意4【只定义类指针】

这跟不用new申明对象有很大区别,类指针可以先行定义,但类指针只是个通用指针,在new之前并为该类对象分配任何内存空间。比如:

Test* ptest = NULL;

  • 但使用普通方式创建的类对象,在创建之初就已经分配了内存空间。而类指针,如果未经过对象初始化,则不需要delete释放。

参考文章链接:https://blog.csdn.net/weixin_52028906/article/details/124513418文章来源地址https://www.toymoban.com/news/detail-722521.html

到了这里,关于(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 执行adb指令报错:error: more than one device/emulator解决办法

    进行安卓设备的测试过程中,执行adb指令可能会遇到一些小错误,若是报错:error: more than one device/emulator,是因为我们有多个设备连接了电脑,解决办法很简单,只需要我们指定执行设备就可以了,连接安卓设备后进入终端输入: 设备序列号要是不清楚,可以输入: 进行获

    2024年02月13日
    浏览(51)
  • unity VS无法进行断点调试

    有时候我们的VS无法进行断点调试,报错如下:  原因是:开启了多个项目,vs无法找到调式项目  解决:点击菜单栏--调试----附加unity调试程序 会弹出一个框,然后选择你要调试的项目  即可

    2024年02月10日
    浏览(51)
  • vs code 提交代码弹框提示:请确保已在git中配置您的“user.name”和“user.email” ——解决方法

    一、场景 修改完项目代码,准备提交到git上,结果提交失败,弹框提示:请确保已在Git中配置您的“user.name”和“user.email” 二、原因 新换了主机,重装了系统,安装git后还没有配置“user.name”和“user.email”。 三、解决办法 打开终端,运行以下配置命令: 以上是全局配置

    2024年02月11日
    浏览(63)
  • 安装orcle报错:指定的 Oracle 系统标识符 (SID) 已在使用

    安装orcle报错:[INS-35075]指定的 Oracle 系统标识符 (SID) 已在使用 说明前面的orcle没有彻底删除 搜索框 —— 输入:regedit —— 回车 运行regedit,选择HKEY_LOCAL_MACHINE SOFTWARE ORACLE,直接删除 选择HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services,滚动这个列表,删除所有Oracle开头的 HKEY_LOC

    2024年02月16日
    浏览(43)
  • vs code 调试vue3 。解决无法击中断点的问题。

    一、使用新版的vs code。这里不在赘述安装过程。 二、安装插件, JavaScript Debug。 这个插件应该是默认就有的,新版vs code去掉了 Debugger for Chrome 这个插件。 三、在vs code ,运行和调试页面进行配置。 点击齿轮出现launch.json编辑页面,webRoot 默认是上图 注销掉的 地方。 webRoot 改

    2024年02月11日
    浏览(39)
  • 安装Solidworks出现报错:可执行文件VCRedist10\vcredist_x64.exe未成功安装/ 找不到vc_red.msi文件路径/ Windows不允许更新经过管理的播发产品

    我在安装solidworks时出现了如标题所示的各种报错,在网上到处找解决办法,捣鼓了三个小时终于弄好了,由于网上的方法都各自只能解决我一部分的问题,所以我把它们整合了一下,分享给大家(*^▽^*) 首先网上有说手动安装vc库的,但是我按照下图路径找到vc库之后发现,

    2024年02月11日
    浏览(200)
  • 【BUG历险记】vivado报错:binding vhdl entity ‘ xxxxx ‘does not have port ‘ xxxxx ‘解决方案

    🏔【BUG历险记】 vivado报错:binding vhdl entity xxxxx \\\' does not have port \\\' xxxxx \\\'解决方案 我在编写雷达的脉冲压缩仿真时,先例化了FFT和复数乘法器,并仿真验证通过了;再例化IFFT,结果仿真时出现错误,前面仿真通过的复数乘法器报错。说是没有aclk引脚,实际上是有的。 更改代

    2024年02月12日
    浏览(40)
  • 【问题解决】Git报错:failed to push some refs to xxxxx

    To https://xxxxxxxxxxxx.git ! [rejected] master - master (fetch first) error: failed to push some refs to ‘https://xxxxxxxx.git’ hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hin

    2023年04月15日
    浏览(59)
  • Android Studio 报错:Failed to create Jar file xxxxx.jar

    通过分析,新下载的项目没有 project/gradle 目录,故通过其他项目复制到当前项目,就解决了该问题。 同时也出现了新的问题 原因:gradle版本过低,修改到java1.8即可 查看agp和gradle的版本关系 https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包