First I am not sure if that`s how you initialize a double pointer. Second, its seems you have a pointer foo; that points to four pointers. To avoid memory leak you have to delete all pointers and not just one. So you need to: delete foo[0]; delete foo[1]; delete foo[2]; delete foo[3]; and then delete foo; All these are pointers.
@Juniar, it is not a double pointer, it is a pointer to a data type defined as int[4] (that occupies 4 contiguous ints), so in the memory looks like {X X X X} -> {X X X X} -> ... 100 times ... -> {X X X X }
new T[]withTbeingint[100]. Therefore, you needdelete[], like any otherT.int[4]actually?int (*foo)[4]declares a pointer to array-of-4-int, then you allocate 100 such arrays.int[100].int[4](that occupies 4 contiguous ints), so in the memory looks like{X X X X} -> {X X X X} -> ... 100 times ... -> {X X X X }