You can't do what you want directly with the array form of operator new and delete. There are some hacks you can use but, generally speaking, they often do not qualify as "safe" (a term that has various aspects).
There is, however, no need to directly use operator new or delete directly. That is inherently the dangerous approach, whether you are managing one dynamically allocated object or a million. Use a standard container instead.
Code:
#include <vector>
int main()
{
std::vector<ScriptMarker> container(number_you_need, ScriptMarker(pMission));
// do whatever you need with elements of the container
// even resize the container if you need to
// as we return, the container and its elements are cleaned up "safely".
return 0;
}
The container will be safely destructed (and its elements) when it passes out of scope.