As of right now the question is open and has a non-negative score. Reading it myself, I feel that you did a good job of explaining the various potential advantages and disadvantages of each approach and you did a good job of asking specifically what kind of answer you are looking for. Unfortunately it doesn't seem like you have gotten a good answer, however I can't specifically help you with that.
A good question is not guaranteed a good answer unfortunately. It might mean that the question just hasn't gotten good attention, or it might mean that there is fundamentally no good answer to your question. While I don't consider myself an "expert" in C/C++, I know enough about it and cross OS software development that my intuition has me leaning towards the latter. It seems that a factual objective truth or best practice probably doesn't exist here, and this specific problem has enough potential caveats, risks, or architecture considerations that it is likely highly specific to a given use case or scenario needs. An objective answer to this question would look something like what you have already added into your question, which is a set of criteria and considerations that should be weighed against to arrive at the most sensible decision for your problem specifically.
In other words, a good answer to your question is likely to evaluation criteria that would lead to the best solution to your specific use case as a software engineer.