O problema com esse sinalizador é que alguns programadores não sabem que um local de memória pode estar acima do limite de 2 GB, o que pode causar alguns erros desagradáveis no aplicativo. E deixe-me explicar por que ...
Um ponteiro para um endereço na RAM é semelhante a um inteiro assinado de 32 bits em determinados idiomas. Assinado significa que pode ser positivo ou negativo. Agora, para verificar se um ponteiro está atribuído ou não, você verifica se é igual a NULL / nulo ou não. Se não é nulo, é atribuído a algo.
Alguns programadores verificam isso verificando se o endereço é maior que nulo, esquecendo a possibilidade de que os endereços possam ser negativos. Como um ponteiro negativo é menor do que nulo, o sistema pensa que não está designado e, portanto, reatribui um novo valor a ele, perdendo seu valor atual e vazando memória.
Felizmente, a maioria dos programadores aprendeu a verificar se é igual ou diferente, em vez de maior que nulo. Nesse caso, o aplicativo não teria problemas em usar até 3 GB.