Electric Fence – biblioteka służąca do debugowania dostępu do pamięci w programach bez konieczności ich powtórnej kompilacji. Biblioteka Electric Fence została stworzona przez Bruce'a Perensa.
Dostępy poza zaalokowany obszar pamięci często powodują trudne do wykrycia błędy – program zamiast zakończyć działanie nadpisuje zawartość innej zmiennej i trudno jest zidentyfikować źródło problemu. Electric fence każdą alokacje umieszcza pod koniec (lub na początku) strony pamięci, tak że każde wykroczenie za (odpowiednio przed) zaalokowany obszar spowoduje wygenerowanie wyjątku przez procesor. Ponieważ strony pamięci (przynajmniej na procesorach rodziny x86) muszą mieć rozmiar będący wielokrotnością 4096 bajtów, nie ma możliwości ochrony przed oboma tymi przypadkami jednocześnie, jednak przy użyciu Electric Fence przekroczenia w drugą stronę nadpisywać będą bezużyteczne bajty, a nie inne zmienne.
Electric Fence wykrywa błędy polegające na czytaniem lub pisaniu obszaru danych poza zaalokowanym obszarem, a nie wykrywania wielu innych rodzajami błędów dostępu do pamięci.
Weźmy prosty program w C z błędem off by one: #include <stdlib.h> #define SIZE 100
int main() { int* foo; int i;
foo = (int*) malloc (sizeof(int) * SIZE); for(i=0; i<=SIZE;