undefined-behavior

    0热度

    2回答

    以下是静态成员函数的内联(定义在头文件中)。字符串“MyClass”总是保证在静态内存中?如果没有,这不会返回堆栈中的指针吗? const char * className() { return "MyClass"; } 编辑: 这个怎么样? const RWCString& className() { return "MyClass"; } RWCString是具有隐式构造,

    12热度

    3回答

    我知道,右移负签名类型取决于实现,但如果我执行左移,该怎么办?例如: int i = -1; i << 1; 这是明确的吗? 我认为标准的不说,大约有符号整型负值 如果E1已经签署的类型和非负值,E1×2 E2是 可表示在结果类型那么这就是结果的价值; 否则,行为是不确定的。 它只是澄清,如果结果不能用signed型表示,那么行为是未定义的。

    1热度

    2回答

    我别无选择,从那以后纠正,类似下面的代码: class SomeClass { public: static int AdjustValue(float input); static int DoSomethingWithAdjustedValue(int adjustedInput); static int DoSomethingWithNormalValue(f

    0热度

    2回答

    可能重复: Is this undefined C behaviour? #include<stdio.h> int main() { int a=5; printf("%d %d %d",a++,a++,++a); return 0; } 输出: 在GCC: 7 6 8 在TURBO C: 7 6 6

    6热度

    1回答

    我的一个朋友发现了NSDictionary的一些奇怪的行为,我很好奇它为什么会发生。请看下面的代码: NSDictionary *dict = [[NSDictionary alloc] init]; // Oops, we can't mutate an NSDictionary [dict setObject:[[NSNull alloc] init] forKey:@"test"];

    2热度

    5回答

    以下是否会调用未定义的行为? int x; int i = x; 从C++ 03 (4.1/1)如果到所述左值是指该对象不是类型T 的目的,而不是衍生自类型的对象参考T或如果对象是 未初始化,则需要此转换的程序有 未定义的行为。 编辑: 然而,从(3.3.1/1)的对象可以与它自己的indetermine值进行初始化,这是为什么?即 int x = x; //not an undefined

    2热度

    1回答

    你好,祝你有美好的一天。 这是真的(是由标准的要求),该标准C++ std::map<Key, Value>类必须具有以下特性: 它可以工作,如果价值没有operator=或operator=是私有的(和std::map是不是的私人朋友值)。 它可以工作,如果价值没有默认构造函数或默认构造函数是私有的(和std::map不是一个私人朋友的价值) 为什么我在问 - 我一直在问到为内部使用std ::

    14热度

    4回答

    这个问题不同于'何时/为什么我应该使用一个virtual析构函数?'。 struct B { virtual void foo(); ~B() {} // <--- not virtual }; struct D : B { virtual void foo(); ~D() {} }; B *p = new D; delete p; // D::~

    1热度

    2回答

    如果我以前已清除了clear a vector,会发生什么情况? 我在Visual Studio中试用过它,并没有导致任何运行时错误。但我正在寻找一个可能的例外原因(下面)并想知道这是否可能是原因? *** glibc detected *** process.out: double free or corruption (out): 0x01a0b588 *** 更新代码: bool myc

    14热度

    2回答

    向列表中添加一个已命名的项目时,是否保证该项目将被添加到列表的末尾?在实践中似乎是这样,但不确定这是否是一个危险的假设? test = list() test[[ "one" ]] = 1 test[[ "two" ]] = 2 # will always appear after "one"? test[[ "three" ]] = 3 # will always appear after