sdim (文字列型変数)の初期確保バイトは、64バイトです。
それを超えるバイト数は、確定バイトとなります。
HSP特有のメモリ自動再確保機能が動作するのは、文字列を扱う命令のみです。
poke などのメモリ内容を直接操作する命令には対応していません。
なので、poke の場合、確保されたバッファを超えてしまっているのでエラーとなります。
>>では、456文字分入れるつもりでsdim buf, 456としても、456文字入れた場合、
>>1バイト拡張されているということですか
buf に入れる方法にもよります。
buf = "456文字"
などで入れた場合は、NULL 文字が付与され 457 バイトのメモリが再確保されます。
明示的に NULL 文字を付与する方法
buf = "456文字" + "\0"
などの方法で明示的に NULL 文字を付与した場合、458 バイトのメモリが再確保されます。
これは、自分で付与した NULL 文字も含めて、HSPが最後に NULL 文字を付与しているので 458バイトとなります。
poke で NULL 文字を入れようとした場合は、そもそもバッファオーバーフローを起こしますので入れれません。
sdim buf,456
poke buf,456,0 //メモリの456番地を操作しようとしているのでエラー
基本的に、メモリを動的に確保する場合、nori さんが回答している方法で行ってください。