How to know the current bounds of HEAP.

Rather than always using C strings which is not as friendly as String, I would like to write a class so that I can have the advantage of String.

C strings are neither friendly or unfriendly. They simply involve a different mindset.

The String class has some nice features. What it does not do well is manage the memory needed to allow a String to grow as needed. Your class must do memory management better than the String class, or ridicule will be heaped on it, too.

Also, how can I write to addresses directly and read from them?

Write what to what address? You can only write directly to a memory location using assembler. The indirect methods, like x = 14; are far easier to use.

I'm completely new to all this

So, what makes you think you can write a class that is better, for some definition of better, than String? You need more than ego for that.