If that array is initialized in constructor then yes, your CDO and each instance of that object will populate 1GB of memory. If that object is meant to be a singleton and that array is crucial, consider using the CDO as a singleton. You can get the CDO in C++ via GetDefault<USomeObject>()
for a const version or GetMutableDefault<USomeObject>()
for non-const version. You can also pass/return the CDO to blueprints just like a normal object.
If you want to keep working with instances, but avoid populating CDO object, you can add a check as such :
if (!HasAnyFlags(RF_ClassDefaultObject))
{
// do stuff
}
Alternatively, create your own initialization function and call it whenever you create a new object instance.
Regarding second question I’m not sure what they mean. My guess is that in C++ you normally have the possibility to delete constructors (eg: USomeObject() = delete;
) and that sentence in UE docs just warns you not to do that.