undefined-behavior

    0热度

    1回答

    下面的代码给出了预期的分段错误。 struct B{ shared_ptr<B> createShared(){ return shared_ptr<B>(this);} }; int main() { shared_ptr<B> p1 = make_shared<B>(); shared_ptr<B> p2 = p1->createShared();

    -1热度

    1回答

    我添加了一个新的类到解决方案的一部分的DLL。所有工作正常,直到我开始在this问题中讨论错误时,我将用调试器启动解决方案。这意味着调试器遇到了一些不好的情况,可能会造成腐败,尽管它没有明确指出它在哪里。 我的问题缩小到我添加的类,如果我删除它,解决调试正常,没有错误。但显然,我添加的课程没有任何问题! 所以我评论我的课,并添加一个新的简单(虚拟)Book类只是为了看它是否会产生同样的错误,但它不

    2热度

    2回答

    C99和C11中的有效类型规则规定,没有声明类型的存储可以用任何类型写入,并且存储非字符类型的值将相应地设置存储的有效类型。 抛开INT_MAX可能小于123456789的事实,以下代码对有效类型规则的使用是否严格符合? #include <stdlib.h> #include <stdio.h> /* Performs some calculations using using int,

    -2热度

    2回答

    我为char指针分配了一些空间,并尝试访问超出分配空间但仍然没有分段错误。我的代码如下: char *src = malloc(4); strcpy(src, "1234"); char *temp; for(int i = 0 ; i<5 ; i++) { temp = src; srC++; printf("ite ch %c

    4热度

    1回答

    当你运行该代码: #![allow(exceeding_bitshifts)] fn main() { const NUMBER: u64 = 0b_10101010; fn print_shift(i: u32) { println!("{:b}", NUMBER >> i); } print_shift(65); print

    2热度

    1回答

    我想编写一个模板函数,可以使用std::vector将数据传递给C风格的API(在我的使用案例中,特别是OpenGL)。该代码我想出了这个样子的: template<typename T> void pass_data(GLuint buffer, std::vector<T> const& data) { glBindBuffer(GL_ARRAY_BUFFER, buffer);

    3热度

    5回答

    从http://en.cppreference.com/w/c/memory/malloc: 返回的指针必须用免费被解除分配()或realloc()。 从http://en.cppreference.com/w/c/memory/calloc: 返回的指针必须用免费被解除分配()或realloc()。 严格地说,为什么必须返回指针被释放? 现在我知道POSIX强制内存将在程序终止时被释放,所以在实

    0热度

    1回答

    我想知道为什么我无法显式更改时,我的代码为y [0]提供了更改的值。我已经提供在下面的链接的输出: Code Output 代码: #include <iostream> int main() { std::cout << "Enter total number of values of x/y" << std::endl; int n; std::cin >>

    7热度

    2回答

    正如P0532R0解释,在如下因素用例std::launder必须使用,以避免不确定的行为(UB): struct X{ const int i; x(int i):i{i}{} }; unsigned char buff[64]; auto p = new(buff) X(33); p->~X(); new(buff) X(42); p = std::l

    0热度

    3回答

    如果我有一个嵌入的空终止符[是:那个UB?],它是为我准备好后访问它的值吗? #include <stdio.h> const char foo[] = "abc\0def"; int main() { printf("%s", foo+4); return sizeof(foo); } 为了记录在案,它打印你所期望的: def