C++ STL map::operator[] 在被删除的条目上完成

2023-12-28

std::map<int,int> bar;

int foo(int key)
{
  bar.erase(key);
  return 1;
}    

int main()
{
  bar[0] = foo(0);
  return 0;
}

此代码使用 GCC 4.8 编译,在使用电围栏检查内存使用情况时出现段错误。

LD_PRELOAD=libefence.so.0.0 ./a.out

问题来自于编译器生成的代码开始在映射中分配新条目,然后执行foo()获取要投入的值bar[0]。在跑步的时候foo(),该条目被销毁,代码最终通过写入未分配的内存而结束。

操作的排序方式是否取决于编译器实现,还是由 C++ 当前标准指定?


标准 (§1.9 15) 指定对二元运算符的两个操作数的求值是无序的(除非在某些特定情况下):

除非另有说明,否则各个运算符的操作数的评估 和 各个表达式的子表达式是无序的。

这意味着它不要求赋值操作的一侧先于另一侧求值,事实上,依赖于这些无序操作的顺序是未定义的行为。

对于函数参数的求值顺序来说,这通常也是正确的。

您需要将作业分成两部分:

int result = foo(0);
bar[0] = result;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ STL map::operator[] 在被删除的条目上完成 的相关文章

  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • Thin + Nginx + Websockets 配置 |导轨

    我有一个带有 websocket rails gem 的 Ruby on Rails 3 2 应用程序 在 nginx 反向代理后面的瘦网络服务器中运行 除了 nginx 反向代理外 一切正常 通过删除 nginx 反向代理 websock
  • 在使用 Xamarin 完成方法之前 UI 不会更新

    我正在开始我的移动开发冒险 并且已经遇到了一个问题 我知道在 WPF 中我会使用BackgroundWorker更新 UI 但它如何使用 Xamarin 与 Android 配合使用 我找到了很多建议 但没有一个对我有用 下面的代码在执行其
  • 导入底图时出现导入错误

    我在导入底图时遇到问题 即使我刚刚通过安装pip install basemap 我已经尝试过 python2 7 和 python3 python3 gt gt gt from mpl toolkits basemap import Ba
  • 将div放在导航栏下方并且不要与内容重叠

    我的问题是我在网页顶部修复了一个导航栏 它包括两侧边距和顶部边距 在这个导航栏下面 我想设置一个可滚动的容器 假设我正在使用 Bootstrap 3 2 0 来布局网站 问题是 由于导航栏的边距 我想要放在下面的内容与导航栏重叠 并且显示在
  • Jmeter,如何增加堆大小

    我读过您需要更改 jmeter bat 文件中的堆大小 我使用的是 Windows 以增加内存 以便能够测试大约 500 个线程或更多 这是默认值 if not defined HEAP rem See the unix startup f
  • 如何在android中交换具有不同布局的片段?

    我正在开发一个使用片段的 Android 应用程序 它更像是主 详细信息形式 我希望主要活动由左侧的列表片段组成 根据左侧选择的项目 我想在右侧显示具有不同布局的片段 注意 右侧的每个片段需要不同的布局 视图 我遇到的所有示例都仅使用右侧的
  • org.openqa.selenium.WebDriverException:未知错误:Chrome 无法启动:崩溃。 (未知错误:DevToolsActivePort 文件不存在)

    Javascript selenium 框架 不在 Chrome 上运行 我已经尝试了所有可能的方法 取消选中以管理员身份运行 Code public void setUp throws InterruptedException IOExc
  • Microsoft VisualStudio TestTools UITest dll

    我需要找到 Microsoft VisualStudio TestTools UITest Common dll Microsoft VisualStudio TestTools UITest Extension dll Microsoft
  • iOS 8.3 更新后 NSMutableURLRequest 正文格式错误

    在今天的 iOS 8 3 更新之前 我的代码工作正常 但更新后服务器开始拒绝请求 因为它找不到 JSON 数据 我发现 iOS 发送了错误的 application x www form urlencoded 文本 未正确编码 因为它看起来
  • Symfony 2中如何获取请求参数?

    我对 symfony 很陌生 在其他语言中 例如 java 和其他语言 我可以使用request getParameter parmeter name 来获取该值 我们可以用 symfony2 做一些类似的事情吗 我看过一些例子 但没有一个
  • 在 attoparsec 中实现skipWhile1

    阿托秒差距 https hackage haskell org package attoparsec提供功能takeWhile1至少消耗一个字符 然而 没有类似的skipWhile 我该如何实现这个功能skipWhile1 Note 这个问
  • 如何永久显示标记标签?

    在jVectorMap中 我试图找到一种解决方案来永久显示标记标签 但我无法做到 我在文档中也没有找到任何有关它的信息 我只想最初显示的标记标签 有什么建议么 没有一种快速或简单的方法 jVectorMap 显示标签的方式是使用 div 和
  • 如何使用“RotateDrawable”?

    谁能告诉我他们是怎么得到的RotateDrawable是否可以通过代码或 XML 或两者来工作 关于动画绘制的文档非常差 动画似乎只适用于图像 我希望能够为所有可绘制对象制作动画 当我试图得到一个RotateDrawble来自 XML 只会
  • Groovy 和 GWT:结合两种范例

    是否可以使用 GWT 组件在 groovy 中开发应用程序 Luis 如果您想在服务器端使用 Groovy 并在 UI 上使用 GWT 那当然是可能的 您可以使用 Grails 服务器上的 Groovy Web 框架 并且Grails GW
  • 将表达式插值到表达式中

    我想在宏内部构建一个带有关键字参数的构造函数 并且第一个关键字参数需要用于表达式 我无法将该表达式放入表达式中 这就是我的意思 说我有一个类型 type Test ex end 其中包含一个表达式 我想创建一个构造函数origex a b
  • 在 RaphaelJS 中制作 100% 宽度的图表?

    我见过 Flash 中的图表和其他东西基本上可以很好地适应浏览器的大小或它们所在的灵活元素 我不太熟悉 raphaelJS 但你能做到这一点吗 如果是的话 如何 在 raphaeljs 中 您可以对 Raphael 对象调用 setSize
  • hadoop map reduce -archives 不解压存档

    希望你能帮我 我在 hadoop map reduce 上遇到了一个令人头疼的问题 我已经在 hadoop 版本 1 0 3 上成功地在 map reduce 上使用了 files 选项 但是 当我使用 archives 选项时 它会复制文
  • 有或没有[弱自我]

    我的情况很奇怪 我的服务器当前已关闭并收到 503 http 状态代码 根据给定的代码如下 代码进入 if 条件 但是当我将调试点置于let error self decodeErrorMessage data data statusCod
  • 为什么 isProviderEnabled() 方法即使在建筑物内部也始终返回 true

    在这种情况下 我使用 GPS 作为提供商 我尝试在建筑物内行走 但似乎找不到位置 是的 在大楼里 GPS 不起作用是有道理的 那么 为什么 isProviderEnabled 返回 true 呢 无论如何 我应该如何实现 搜索 GPS 信号
  • C++ STL map::operator[] 在被删除的条目上完成

    std map