The reason for semicolon in all c-family languages is, that the code parser (part of compiler) must know somehow, when is the expression complete. Programmer is free to type another statement(s) in that same line, each delimited by a semicolon.
In some other languages, end of line character denotes end of expression.
As to the memory consumption, with ASCII coding (or variable length coding), it would be 8 bits = 1 byte each colon. But careful, this will only consume memory while you edit the code in editor.
When you compile/execute your code - those semantic characters like colons, commas, brackets, etc are not held in memory anymore. As stated before, this is only needed for compiler (and editor of course).
Does this explain ?