次の2つのヘッダーを含むライブラリを使用するとします。
// types.h
typedef const char* Value;
typedef const char* Key;
// map.h
/** The given name and value will be copied into the map */
void add(struct Map* m, Key key, Value value);
コメントは、char*
sのkey
内容を意味しvalue
、関数によってコピーされ、add
返された後に使用するためのポインターを格納しないと想定しています。つまり、呼び出し元の関数は、を呼び出した直後に、これらのポインターを使用して、たとえばfree
ingkey
や、など、必要なことをすべて実行できます。value
add
呼び出し元の関数は、またはadd
を変更しないことも期待できます。key
value
さて、そのコメントがなく、実装のソースも使用例も利用できなかった場合、経験豊富なCプログラマーはこれらの所有権の問題について何を想定しますか?