Conventional error correcting codes (ECC) for caches are applied to all cache lines and stored in dedicated SRAM storage, which incurs both space and energy overheads. In contrast, we propose a Smart ECC Allocation (SEA) cache that utilizes cache data space for low-cost error protection of last-level caches. SEA cache avoids the requirement for dedicated storage for ECC check bits, which are stored in cache lines as data. To effectively utilize cache space, we group several cache sets and manage them according to program behavior. SEA cache eliminates the considerable space overheads of conventional ECC schemes without noticeable reliability and performance degradation.