#include <iostream> #include <vector> #include <cstddef> const std::size_t HEIGHT = 10; const std::size_t WIDTH = 10; typedef std::vector<std::vector<int>> Matrix; inline void set_bit(Matrix& matrix, std::size_t x, std::size_t y) { matrix[x][y] |= (0x80 >> ((x) % 8)); } void print_screen(Matrix const& matrix) { std::vector<char>::size_type x, y; for (y = 0; y < HEIGHT; y++) { for (x = 0; x < WIDTH/8+1; x++) { for (int i = 0x80; i != 0; i = (i >> 1)) { try { if ((matrix[x].at(y) & i) != 0) std::cout << '*'; else std::cout << ' '; } catch(const std::exception& e) { std::cout << e.what() << " failed\n"; } } } std::cout << "\n\n"; } } int main() { //Matrix matrix; std::vector<std::vector<int>> matrix (HEIGHT, std::vector<int>(WIDTH/8)); std::cout << "Outer matrix size: " << matrix.size() << "\n"; for(const auto& v : matrix) { std::cout << "Inner size: " << v.size() << "\n"; } std::vector<char>::size_type x, y; for (x = 0; x < WIDTH; x++) { for (y = 0; y < HEIGHT; y++) { if (x == 0 || y == 0 || x == WIDTH-1 || y == HEIGHT-1) { set_bit(matrix, x, y); } } } print_screen(matrix); }
Standard input is empty
Outer matrix size: 10 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 Inner size: 1 * ** vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed vector::_M_range_check failed
*** Error in `./prog': double free or corruption (!prev): 0x0973a0b8 *** ======= Backtrace: ========= /lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x75e72)[0xb754de72] /lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x76bb0)[0xb754ebb0] /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb773082f] ./prog[0x8048dc6] ./prog[0x8048aec] /lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf5)[0xb74f18f5] ./prog[0x8048b81] ======= Memory map: ======== 08048000-0804a000 r-xp 00000000 08:03 1295705 /home/MdFoSm/prog 0804a000-0804b000 rw-p 00001000 08:03 1295705 /home/MdFoSm/prog 0973a000-0975b000 rw-p 00000000 00:00 0 [heap] b74d6000-b74d8000 rw-p 00000000 00:00 0 b74d8000-b7681000 r-xp 00000000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7681000-b7682000 ---p 001a9000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7682000-b7684000 r--p 001a9000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7684000-b7685000 rw-p 001ab000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7685000-b7688000 rw-p 00000000 00:00 0 b7688000-b76a3000 r-xp 00000000 08:03 1303883 /lib/i386-linux-gnu/libgcc_s.so.1 b76a3000-b76a4000 rw-p 0001a000 08:03 1303883 /lib/i386-linux-gnu/libgcc_s.so.1 b76a4000-b76a5000 rw-p 00000000 00:00 0 b76a5000-b76e6000 r-xp 00000000 08:03 1303836 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b76e6000-b76e7000 r--p 00040000 08:03 1303836 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b76e7000-b76e8000 rw-p 00041000 08:03 1303836 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b76e8000-b77c4000 r-xp 00000000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77c4000-b77c5000 ---p 000dc000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77c5000-b77c9000 r--p 000dc000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77c9000-b77ca000 rw-p 000e0000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77ca000-b77d1000 rw-p 00000000 00:00 0 b77d3000-b77d7000 rw-p 00000000 00:00 0 b77d7000-b77d8000 r-xp 00000000 00:00 0 [vdso] b77d8000-b77f7000 r-xp 00000000 08:03 1303796 /lib/i386-linux-gnu/ld-2.17.so b77f7000-b77f8000 r--p 0001f000 08:03 1303796 /lib/i386-linux-gnu/ld-2.17.so b77f8000-b77f9000 rw-p 00020000 08:03 1303796 /lib/i386-linux-gnu/ld-2.17.so bfd21000-bfd36000 rw-p 00000000 00:00 0 [stack]