RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-321467

MGNeo's questions

Martin Hope
MGNeo
Asked: 2022-03-21 18:55:54 +0000 UTC

通过在 C 中键入双关语实现接口类型

  • 2

考虑以下 C 代码:

struct base_type
{
    // ...
};
struct complex_type
{
    struct base_type base_type_part;
    int complex_type_part;
};

void function(struct base_type* base_type_ptr)
{
    struct complex_type* complex_type_ptr = (struct complex_type*)base_type_ptr;
    complex_type_ptr->complex_type_part = 1;
}

int main()
{
    struct complex_type complex_type_object;
    function((struct base_type*) &complex_type_object);
    // ...
}

这种黑客行为合法吗?

我一直在修改标准,尤其是关于别名的部分,我觉得不允许这样做,但每个人都这样做。

如果合法,依据是什么?

c
  • 2 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-04-13 18:05:30 +0000 UTC

std::stringstream 是否有类似 shrink_to_fit 的东西?

  • 1

你能告诉我是否有std::stringstream类似物shrink_to_fit吗?

例如,我使用指定类型的流对数据进行序列化和反序列化。在您工作时,所使用的流线柱会不断扩大,从不收缩。当然,你可以不时手动压缩,但这会对性能产生负面影响,因为压缩流的字符串容量会再次变小,并且当向这样的流添加数据时,膨胀将再次发生。

最小的可重现示例:

#include <sstream>

int main()
{
  std::stringstream ss;

  for (size_t i = 0; i < 1'000'000'000; ++i)
  {
    ss.put(i);
    ss.get();
  }

  return 0;
}

Windows在具有本机编译器的环境中运行时VS 2017,内存消耗只会增加(在调试版本和发布版本中)。

c++
  • 2 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-04-08 20:37:38 +0000 UTC

套接字看不到 TCP 连接断开

  • 0

有以下情况。

一台机器上有一个 TCP 连接,通过loopback. 有两个套接字А和Б,它们设置为非阻塞模式。调用socket ,然后А调用socket ,返回 0。shutdown(..., SD_BOTH) + close()Бrecv()

情况正常吗?在我看来,在脚本中,套接字Б应该检测到通道的关闭,因此后续调用recv()不应返回 0。

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-04-01 17:33:56 +0000 UTC

奇怪的预处理器行为

  • 0

考虑以下代码:

class Type
{
  public:
    void Method(){};
};

#define Method ...

int main()
{
    Type type;
    type.Method();
    return 0;
}

预处理器用 替换宏Method的内容是否正常?type.Method()Method

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-03-19 17:47:54 +0000 UTC

奇怪的行为 - 编译器忽略复制构造函数并尝试调用已删除的移动构造函数

  • 3

考虑下面的代码(实际代码稍微复杂一些,并且在 NDA 下):

class NonMovable
{
  public:
  NonMovable() = default;
  NonMovable(const NonMovable&) noexcept = default;
  NonMovable(NonMovable&&) noexcept = delete;
  NonMovable& operator=(const NonMovable&) noexcept = default;
  NonMovable& operator=(NonMovable&&) noexcept = delete;
  // ...
};

NonMovable SomeFunction()
{
  NonMovable nonMovable;
  // ...
  return nonMovable;// Error, NonMovalbe(NonMovable&&) is deleted.
}

我无法弄清楚为什么会发生此错误。它NonMovable有一个标准的复制构造函数,但是编译器尝试调用移动构造函数,它被删除了。

这是编译器错误吗?或者也许还有其他一些因素迫使编译器做出这样的决定?

这就是它的外观。Visual Studio在不同的版本和编译器上观察到该错误。在此处输入图像描述

c++
  • 2 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-03-15 18:18:32 +0000 UTC

如何告诉 Visual Studio 具有相同名称的单元测试是不同的测试?

  • 0

考虑以下代码:

namespace A
{
    TEST(Object, Serialization)
    {
        Object object;
        // ...
    }
}

namespace B
{
    TEST(Object, Serialization)
    {
        Object object;
        // ...
    }
}

两个这样的测试的组装正确地通过了,因为测试由于属于不同的命名空间而具有不同的名称。但是,在构建之后,Visual Studio它只能看到来自命名空间的测试B。

这不是正常情况。在一个大型项目中,可能有许多名为 的类型Object,它们位于不同的命名空间中。那么,现在当在同一个项目中测试具有相同名称的类型进行测试时,您需要发明其他方法来手动装饰测试名称吗?

有没有办法通过在中指定自定义构建设置来解决这个问题cmake?

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-01-28 18:33:24 +0000 UTC

以下赋值运算符的显式声明有什么影响?

  • 2

考虑以下代码:

class Object
{
  public:
    Object& operator=(const Object& object) noexcept = default;
  private:
    int i;
    // ...
};

您能否告诉我明确声明复制赋值运算符不引发异常并且具有默认实现是否有任何影响?

是否会检查自动生成的代码以防止自我分配?

c++
  • 3 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2022-01-21 19:59:58 +0000 UTC

sizeof() 应用于 std::array 时返回什么?

  • 1

你能告诉我Стандарт C++下面的代码是什么意思吗:

std::array<char, 10> arr;
memset(arr.data(), 0, sizeof(arr));

我有一些疑问:

sizeof(arr) == sizeof(char) * arr.size()
c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2021-12-22 02:52:24 +0000 UTC

算子实现中组合的脆弱性,考虑到异常的保证

  • 0

如果我正确理解以下内容,请告诉我。

我有类型A。假设我想实现一个运算符,该运算符A& operator=(const A& a)对这种类型的异常有很强的保证。也就是说,在失败的情况下,运算符会抛出异常,但该类型的对象A仍保持其原始状态。

问题是该类型A包含许多字段,而这些字段又包含其他字段,并且在内部的某个地方有一个类型字段Z。千百年来,一种类型Z为其运营商的异常提供了强有力的保证Z& operator=(const Z& z),但是在可怕的一天,这个保证被打破了,没有人看到它。

问题如下。

  1. 构图真的那么脆弱吗?
  2. 您如何检测类型字段何时Z开始违反A& operator=(const A& a)在执行语句时所有操作链都处于强异常保证之下的保证?
  3. 如果我们转向指针的组合(智能)而不是值的组合,是否有可能克服这种脆弱性?实际上,在这种情况下,可以通过调用Type::Uptr Type::Clone() const. 移动更容易实现 - 只需更改指针的值。在我看来,这更容易分析和跟踪,但我不确定这一点。
c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2021-12-14 17:57:53 +0000 UTC

将类添加到指定文件创建目录的项目时,Visual Studio 的不当行为

  • 1

请告诉我是否有办法解决以下问题Visual Studio:

  1. 我有一个目录结构非常深的项目。
  2. hpp在其中一个目录( +cpp文件)中将一个新类添加到项目中。
  3. 该对话框指定类名和目录路径。
  4. 接下来,会出现另一个对话框,您可以在其中更改类名hpp和cpp文件名。对于文件,您还可以选择一个目录(再次...)。如果我单击带有省略号的按钮来指定目录hpp或cpp文件,我会看到与 step 中指示的路径完全不同的路径3。假设文件再次设置到正确的目录。被按下OK。
  5. 该类被添加到项目中,与之对应的文件被创建,并且很有可能出现在任何目录中,但不会出现在设置了 3 次的目录中。

如何处理?这种行为已经观察了很长时间(几年),并且干扰了工作

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2021-12-05 02:29:32 +0000 UTC

C++,易失性和可锁定共享对象

  • 5

我有几个volatile问题C++:

  1. volatile有一种观点认为,在不同线程中使用共享对象(ala,一个链表,其所有方法都受内部互斥体保护)时不需要创建。问题 - 为什么?如果volatile需要向编译器解释一个值可以以意想不到的方式改变并且不需要优化,那么为什么同步访问自身的链表在从不同线程使用并且没有说明符时可以正常工作volatile?
  2. 用说明符标记的方法的语义是volatile什么?
  3. 什么时候应该使用说明符volatile?具有由从另一个线程更改的标志控制的循环的示例过于简单,并且C++在考虑实际场景时无法提供任何清晰性。
c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-10-02 17:43:14 +0000 UTC

将元素移动到另一个列表时,std::list 元素的迭代器是否仍然有效?

  • 1

您能否告诉我在将元素std::list<T>移动到另一个列表时每个元素的迭代器是否仍然有效?

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-09-15 18:06:43 +0000 UTC

关于构造 std::unordered_map 元素的问题

  • 2

考虑以下代码:

std::unordered_map<std::string, size_t> Counters;
// ...
++Counters[someString];

假设容器中没有给定键的对。然后这会导致一个新的对被插入到容器中,然后对的第二个成员加一。

我想知道以这种方式插入新对是否会将对的第二个成员(类型 counter size_t)预初始化为零?为什么?

一方面,基本类型没有构造函数,所以我认为计数器可能是垃圾。但另一方面...

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-09-14 18:44:02 +0000 UTC

在 std::string 中存储空字符?

  • 2

你能告诉我是否允许在字符串中放入空字符std::string?

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-08-14 19:39:27 +0000 UTC

find_package() 命令在 cmake 中的工作原理

  • 1

你能告诉我cmake团队是如何运作的find_package()吗?

即使在官方文档中,我也找不到详尽的解释和可理解的示例。

例如,如果在项目cmake中调用命令,我(on )在系统上安装所需的包find_package()是否足够?Linux还是我需要在调用之前以某种方式将所需的包附加到项目中find_package()?

cmake
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-07-28 20:24:21 +0000 UTC

使用默认构造函数构造的迭代器中有什么?

  • 1

如果标准迭代器不是从容器中获取的,而是使用默认构造函数单独构造的,您能否告诉我标准迭代器中有什么?

例如,像这样:

std::list<float>::iterator it{};
c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-07-10 22:49:51 +0000 UTC

线程可以在不使进程崩溃的情况下崩溃吗?

  • 1

进程中的线程是否有可能由于错误(分段错误、被零除、内存损坏、竞争条件等)而崩溃或挂起,但内部有这样一个线程的进程继续工作?

如果是,什么时候可能?

c++
  • 2 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-06-19 20:52:24 +0000 UTC

使用 reinterpret_cast 从基转换为子时究竟会出现什么问题?

  • 1

考虑以下代码:

class A {/*...*/};
class B : public A {/*...*/};

void func(A*const a)
{
    B*const b = reinterpret_cast<B*const>(a);
    b->do_something();
}

在一个大型项目中,发现了几个类似的地方。我知道这会导致未定义的行为。

我对以下问题特别感兴趣:

  1. 如果指针a总是指向 type 的对象B,我们会有问题吗?
  2. 如果指针a不指向 type 的对象B,那又如何呢?
c++
  • 2 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-06-15 18:39:50 +0000 UTC

标准 C++ 流何时通过异常报告错误?

  • 5

我似乎找不到以下问题的答案,在这种情况下std::fstream它通过异常报告错误,在这种情况下它通过设置错误标志来报告错误。

我知道存在一种fstream::exceptions()允许您为某些类型(标志)的错误启用异常生成的方法,但是在多次阅读可用文档后,我完全糊涂了。

例如,我不明白的是:如果抛出异常被禁用,那么线程是否会在已经禁用的线程中发生错误时抛出异常?

或者,例如:如果启用了抛出异常,线程会立即抛出异常,还是仅在相应的错误标志已经设置时才抛出异常(即,如果再次发生错误)?

c++
  • 1 个回答
  • 10 Views
Martin Hope
MGNeo
Asked: 2020-06-11 00:49:00 +0000 UTC

无符号整数相乘时是否可以使用 static_assert 检查溢出?

  • 4

考虑以下代码:

static_assert(X > 0);
static_assert(Y > 0);
static_assert(((X * Y) / X) == Y);

WhereX和Y是模板参数,类型为size_t.

此代码应该检查无符号整数的可能溢出(在编译时)。

我的问题是:是否可以保证编译器会首先诚实地计算乘积X * Y,然后才诚实地除以X?

由于X和Y是无符号的,在我看来,编译器必须考虑在可能溢出的情况下失去意义。因此,他必须先乘,再除。但我不确定。

c++
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5