このコードって安全 かつ ポインタの使い方は正しいですか?

int *memoryPointer;
int MEMORY_SIZE = 1024;

memoryPointer = (int*)calloc(MEMORY_SIZE, sizeof(int));

for (int i = 0; i < MEMORY_SIZE; i++) {
    *(memoryPointer + i) = i;
}

for (int i = 0; i < MEMORY_SIZE; i++) {
    std::cout
      << "アドレス:" << memoryPointer
      << " 値:"    << *memoryPointer
      << std::endl;
    memoryPointer++;
}