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