Arduino 日本語リファレンスには
「Arduino言語はC/C++をベースにしており、C言語のすべての構造と、いくつかのC++の機能をサポートしています。」と記載されています。
私自身もう純粋なC/C++を書かなくなって十何年にもなりますが、最近マイコンを弄り始めたので、昔の記憶を頼りにArduino IDEでc言語コードを書いています。
ふと関数の中で動的に一時メモリを確保するのに、次のようにコードを書いていました。
c
1void func(short sz) { 2 byte buff[sz]: 3 memcpy(buff, "hogehoge", sz); 4 return; 5}
「あれ?たしかCでは動的にサイズを確保しようとするとコンパイルエラーになったはずなのに?」
「スタックからメモリを確保する際はalloca関数を使うんじゃなかったっけ?」
という疑問が湧いたのですが、実際にコンパイルは通るし、実行しても今のところpanicを起こすこともありません。
このようなスタックでの動的メモリ確保はArduino言語の仕様しては間違っていないのでしょうか?
或いは、トラブルが偶然起こらないだけでこのような記述はやってはいけないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 09:59