Establecer un valor en el depurador de una sección compartida

Tengo el siguiente código en una DLL:

 #pragma data_seg("ABC")
 __declspec (dllexport) char abc[2000] = { 0 };
 #pragma data_seg()
 #pragma comment(linker, "-section:ABC,rws")

Tengo el siguiente código en un ejecutable:

extern "C" __declspec(dllimport) char abc[];
char *abcPtr = abc;
#define iVar0 (*(long *)(abcPtr))

int main()
{
    printf("Value: %d %p\n", iVar0, &iVar0);
    iVar0 = 66;
    printf("Value: %d %p\n", iVar0, &iVar0);

    char buffer[256];
    scanf_s("%s", buffer, 256);
}

Cuando ejecuto la primera instancia del programa obtengo:

Value: 0 0FC2A000
Value: 66 0FC2A000

Si ejecuto una segunda instancia, obtengo lo siguiente porque están usando la misma sección compartida:

Value: 66 0FC2A000 <- Notice the value here is set
Value: 66 0FC2A000

Sin embargo, si cambio el valor en primera instancia usando el depurador de Visual Studio, puedo ver que cambió en la ubicación de la memoria; sin embargo, no puedo ver el cambio de valor si vuelvo a ejecutar la segunda instancia.

¿Por qué el depurador no puede escribir la sección real compartida (memoria)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta