+19  A: 

It's a bitfield member. Your code means dumpable occupies exactly 1 bit in the structure.

Bitfields are used when you want to pack members in bit-level. This can greatly reduce the size of memory used when there are a lot of flags in the structure. For example, if we define a struct having 4 members with known numeric constraint

0 < a < 20
    b in [0, 1]
0 < c < 8
0 < d < 100

then the struct could be declared as

struct Foo {
   unsigned a : 5;   // 20 < 2^5 = 32
   unsigned b : 1;   // 
   unsigned c : 3;   // 
   unsigned d : 7;   // 100 < 2^7 = 128
};

then the bits of Foo may be arranged like

                      ddddddd c  cc b aaaaa
---------  ---------  ---------  ----------
                       octet 1     octet 0
===========================================
                uint32

instead of

struct Foo {
   unsigned a;
   unsigned b;
   unsigned c;
   unsigned d;
};

in which many bits are wasted because of the range of values

# wasted space which is not used by the program
# v                                     v
                             ddddddd                                  ccc
------------------------------------ ------------------------------------
            uint32                                 uint32


                                   b                                aaaaa
------------------------------------ ------------------------------------
            uint32                                 uint32

so you can save space by packing many members together.

Note that the C standard doesn't specify how the bitfields are arranged or packed within an "addressable storage unit". Also, bitfields are slower compared with direct member access.

KennyTM
Thanks for a great answer!It's worth explicitly noting, for the sake of the casual reader, that the implementation of these bit fields is not only machine dependent, but also compiler dependent, and code that uses assumptions on the location of these bits in memory is highly unportable.
Tzafrir
+5  A: 

It means it's a bitfield - i.e. the size of dumpable is a single bit, and you can only assign 0 or 1 to it. Normally used in old code to save space, or in low-level code that interfaces with hardware (even though the packing is non-portable). See here for more information

Airsource Ltd
The packing is not necessarily as it seems as you point out correctly. Often the bitfields are aligned at 4 byte boundaries. There are however compiler options which influence this.
GorillaPatch
+3  A: 

If I remember correctly, when used inside of a struct the number after the colon signifies how many bits make up the variable (or a bitfield).

So unsidgned dumpable:1; is a single bit bitfield.

Justin Niessner