PythonからCに来ました。Pythonには、文字列を操作するための楽しく単純な白い手袋のアプローチがあります。Cで配列を使用すればするほど、特定の機能を備えていると便利だと思います。特定の操作を行う必要があるたびにこれを行うためのループを作成するのではなく、これを行うためのライブラリを作成することにしました。
それで、私が図書館を持っていて、呼び出しが次のようになっているとしましょう:
char* new_array = meatSlicer(old_array, element_start);
変更したい配列にポインターを渡し、ポインターが返されることを期待し、スライスする要素を示しています。
meatSlicer
(はい、私は悪い名前の吸盤です)がスライサー内でローカルに作成された配列へのポインターを返す場合、そのポインターは悪いポインターになります。だから、meatSlicer()
私はこれを持っています:
... manipulation before the below ...
char *heap_the_Array; /* put it on the heap to pass it back to caller */
heap_the_Array = malloc((size + 1) * sizeof(char));
int i;
for (i = 0; i <= (size + 1); i++){ /* make it so... again */
heap_the_Array[i] = newArray[i]; /* newArray is the local */
}
return heap_the_Array; /* return pointer */
私の質問は、free()
新しい配列を使用できるように、呼び出し元の関数に所有権を適切に戻しているかどうかです。ヒープ上の配列へのポインタを渡すだけで十分ですか?