Hi Steve,
QB64 will write the DATA content into the file internal\temp\data.bin almost as is, it just substitutes the comma used for separating the individual values with a dot (for whatever reason).
E.g. DATA 123,456,&DEADBEEF,&HBADC0DE,text,"quoted text",&B10010011
becomes 123.456.&DEADBEEF.&HBADC0DE.text."quoted text".&B10010011
to use your analogy, it writes it as one string concatenated by dots.
The C++ compiler will translate data.bin into data.o without changing the data from data.bin, but adding reference symbols and some tables. Not sure, but my best guess would be, that the tables contain the offsets of RESTORE lables into the data block.
The data.o is then simply linked into the final EXE, hence your question about freeing the DATA memory is answered with a clear NO. There's no way to remove/free the data from a running program.
READing the data is practically almost identical to reading values from a file, as far I've learned it when implementing the &B stuff for files and DATA. See here:
https://www.qb64.org/forum/index.php?topic=3627.msg129626#msg129626 (especially the 3rd paragraph)
You can easily check all this with a HEX editor. If you don't have one yet, I can recommend "HEX Editor MX" from NEXT-Soft, It's free to use without limitations. They would only expect you to register for extended support, which 1st is not needed for such an easy editor and 2nd the company obviously is no longer a operational unit. It is/was a small german company and the link below brings you directly to the HEX-Editor download page.
However, the editor itself can be switched to english too, using the Menu>Optionen>Einstellungen and then on the tab "Sprache" select english from the dropdown list, then click OK and restart the editor and it will work in english.
https://www.nextsoft.de/index.php?view=products/tools/hexedit/download.htm&right=products/tools/hexedit/rightmenu.htm