ネット上のサンプルを見ると
lua_pushstring(L, "Hello world");
があります。
この"Hello world"の実体は、このスコープ内で何処かに存在することが保証されているだけで、スコープを抜けると直後に消えてしまうかもしれない、との記憶があります。
本来なら
lua_pushstring(L, strdup("Hello world"));
して、Lua側で渡されたポインタをfree()するべきだと思うのですが、そうしているサンプルがありません。
Luaを少し読むと、呼ばれた後で自前で複製しているようですが、その複製を行うまでにその内容が保存されているとことが前提となっているのでしょうか。
No.2ベストアンサー
- 回答日時:
「スコープを抜ける」を勘違いしているように思います。
スコープに入る
↓
いろんな処理(「他の関数を呼び出す」も含む)
↓
スコープを抜ける: これ以降、「スコープ内だけで有効なもの」を使ったときの保証が無くなる
というのが基本的な流れです。
lua_pushstring(L, "Hello world");
は「いろんな処理」にあたり、スコープを抜けることになりません。
もしlua_pushstringでスコープを抜けて、文字列が無効になるなら、
printf("Hello world");
の printf でスコープを抜けて、"Hello world"が無効になるので、printfが出力できない、という理屈になります。
また
https://www.lua.org/pil/24.2.1.html
には「Lua never keeps pointers to external strings(以下略)」と明記されています。
これとは別に。
文字列リテラルの寿命からして、「スコープを抜けたら消える」というものではありません。
過去の質問にこんなのがありました。
https://oshiete.goo.ne.jp/qa/7879297.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Flaskでサーバー立ち上げに関して 1 2023/08/12 21:02
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- 英語 "Hello" の語源は何でしょうか?中国語の「好」Hǎo ではないでしょうか? 2 2022/04/01 10:23
- Ruby プログラミング 3 2023/06/09 14:30
- 英語 "We know from comparing the kilogram in Paris with 2 2023/02/07 15:23
- 政治 竹島の日の前に竹島カレー弁当を開発して販売を拡大することを勧めたいです。!いかがですか。?? 7 2022/12/08 08:02
- JavaScript Google scriptについて 至急scriptを作成して欲しいです! 現在、Googlefor 1 2023/07/01 20:08
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASP.NET 動的コントロールのフ...
-
vb.netでフォーカスされている...
-
ファーストピアスのキャッチが...
-
ユーザーがクリックするまでフ...
-
googleサーチコンソールでの重...
-
自動的に前画面に戻る
-
Access2010 SetFocusが当たらない
-
Flash ブラウザの「戻る」ボタ...
-
カーソルを合わせるとメニュー...
-
ホームページ作成での質問(初...
-
LINEのステメやプロ画は変える...
-
子ウインドウを閉じて 親ウイ...
-
word
-
数式中の文字をCambria Math以...
-
イラレでダブルクリックで文字...
-
『μg』の読み方と意味。
-
名古屋の栄と錦は治安悪い?
-
illustratorとExcelは連携出来...
-
PowerPoint SmartArtの箇条書...
-
PDF→CSVへ変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファーストピアスのキャッチが...
-
googleサーチコンソールでの重...
-
LINEのステメやプロ画は変える...
-
Access2010 SetFocusが当たらない
-
子ウインドウを閉じて 親ウイ...
-
ユーザーがクリックするまでフ...
-
TextBoxのカーソルを右端に移す...
-
VBにて、非アクティブでフォー...
-
Canvasのメモリーリーク疑いに...
-
人体切断マジックの事でお聞き...
-
JSPで初期カーソル表示する方法
-
この曲のタイトルを教えてください
-
ASP.NET 動的コントロールのフ...
-
iframe インラインフレームにつ...
-
アプリがフォーカスを
-
EXCEL VBAで URLの内容 が取...
-
VS2013の選択した行に出る白枠...
-
マイクロダイエットの類似品に...
-
flashとjavascriptとhtmlの連携...
-
◆1000BASE-TのAutonegotination...
おすすめ情報