私は構造を作り、新しい構造自体を返す関数を持っています。構造体には数字の配列と、そこにいくつの数字があるかを示す整数が含まれます(これは配列のように機能します)。 私は一時的な構造体を作成し、それを返すmakeStructを持っています。 mainではこの関数を呼び出してmyNumbers構造体に割り当てます。 これは、関数内に構造体のインスタンスが作成され、myNumbersにコピーされてから削除されるという効果があります。私の仮定は正しいのですか?C:ポインタを持たないときに構造体にメモリを解放するには?
これは正しくコンパイルされているようですが、私の構造を指すポインターがないため、割り振られたメモリーを解放する方法がわかりません。どうすればメモリを解放できますか? はもうそれへのポインタを持っていないとき、構造体へのメモリを解放する方法
#include <stdlib.h>
#include <stdio.h>
typedef struct{
int* numbers; /*array of numbers*/
int crowd; /*crowd of numbers*/
} magicNums;
magicNums makeStruct(int crowd){
magicNums tempStruct, *struct_ptr=&tempStruct; /*my temp struct and its pointer*/
struct_ptr=(magicNums*)malloc(sizeof(magicNums)); /*allocating memory for struct*/
tempStruct.numbers=(int*)malloc(sizeof(int)*crowd); /*allocating memory for struct's numbers*/
return tempStruct;
}
int main() {
magicNums myNumbers;
myNumbers=makeStruct(10);
/*magicNums *myNumbers_ptr=&myNumbers; This won't work */
/*free(myNumbers_ptr); This won't work */
/*free(&myNumbers); This won't work */
return 0;
}
甘くて聖...このコードには何点も間違っています。 – Chowlett
コメントは私の心を笑わせてくれました。私のコードがいかに恐ろしいか自慢してくれます! – Pithikos