No siempre el limite lo marca la memoria, el sistema solo puede mantener abiertos un numero de handles limitados. En este
otro hilo se trato un tema parecido, se abrían handles y no se cerraban hasta que el sistema sin previo aviso decía basta. Comprueba que no estés utilizando algo que abra handles y que luego no los cierres, por ejemplo CreateFile (Puerto serie), GetDc, etc.