Mã của chúng tôi liên quan đến cấu trúc POD (Plain Old Datastruct) (đây là cấu trúc c ++ cơ bản có các cấu trúc và biến POD khác trong đó cần được khởi tạo ngay từ đầu).
Dựa trên những gì tôi đã đọc , có vẻ như:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
nên khởi tạo tất cả các giá trị bằng 0, như sau:
myStruct = new MyStruct();
Tuy nhiên, khi cấu trúc được khởi tạo theo cách thứ hai, Valgrind sau đó phàn nàn "việc nhảy hoặc di chuyển có điều kiện phụ thuộc vào (các) giá trị chưa được khởi tạo" khi các biến đó được sử dụng. Sự hiểu biết của tôi có sai sót ở đây, hay là Valgrind đang tung ra những kết quả tích cực sai?
new MyStruct()
không bắt buộc phải đặt bất kỳ byte đệm nào trong C ++ 03. Trong C ++ 0x là như vậy. Bất kỳ bit đệm nào sẽ được đặt thành 0 trong C ++ 0x.