It depends on the scale. If you have 10 of these, who cares? If you have 1 million? Then you already have 512MB of data, so I don't think the wasted 3MB will be your real problem.
The 1 million objects have to be allocated, thus the allocation control structures will need much more than 3MB. There's more sense in optimizing the allocation, e.g. allocating large arrays instead of single objects. Or storing the strings with byte-exact storage in a large char array, so a string of length 127 will only use 128 bytes, instead of the full 513, wasting much much more. Or even storing each string in a compressed format.
If you need the full 512 byte, you could as well store the strings without the terminating '\0' and only access them by wrapper functions that take care for this.
Note that all these solutions mean extra work that may be error-prone and need extra care, like the last one. So be sure you will need the scalability to large numbers and that memory will be a bottleneck, else you may do premature optimization with all the impacts on readability and maintainability, without ever needing it.