在自己的函数中自由编程
c programming free in a own function
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Mage{
int power;
char* name;
}typedef Mage;
void print(Mage* mage){
printf("Mage: %s, Power: %i", mage->name, mage->power);
}
Mage create(char name[],int power){
Mage* mage = malloc(sizeof(Mage));
mage->power = power;
mage->name = name;
printf("New Mage!\n");
return *mage;
}
void delete(Mage* mage){
free(mage); // -> this is not working
// how can I use free in an own function
// I don't want to write free in main
}
int main() {
Mage gandalf = create("Gandalf",50);
print(&gandalf);
delete(&gandalf);
printf("\n\n\n");
return 0;
}
如何在自己的函数中使用 free,
我不想在 main 中写 free,
这个源代码包含一个免费的,
该程序崩溃
有人知道吗?
我认为你的方法的主要问题是你实际上 return 在你的 create
函数中使用了一个 Mage 结构,而不是一个指向 Mage 结构的指针。
这意味着main
中的Mage gandalf实际上与create
中malloc分配的Mage不在同一个地址。
如果相反,您 return Mage(意思是地址)在 create
中,然后将 gandalf 声明为 Mage*(指向 Mage 结构的指针),那么您可以使用 gandalf直接(没有 &)在你的 print
和 delete
函数中,它会引用你最初在 create
中分配的同一个法师。
如果不清楚,如果您一直在阅读 C 教程,我相信您应该重新阅读章节提示。
希望对您有所帮助,祝您好运:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Mage{
int power;
char* name;
}typedef Mage;
void print(Mage* mage){
printf("Mage: %s, Power: %i", mage->name, mage->power);
}
Mage* create(char name[],int power){
Mage* mage = malloc(sizeof(Mage));
mage->power = power;
mage->name = name;
printf("New Mage!\n");
return mage;
}
void delete(Mage* mage){
free(mage);
}
int main() {
Mage *gandalf = create("Gandalf",50);
print(gandalf);
delete(gandalf);
printf("\n\n\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Mage{
int power;
char* name;
}typedef Mage;
void print(Mage* mage){
printf("Mage: %s, Power: %i", mage->name, mage->power);
}
Mage create(char name[],int power){
Mage* mage = malloc(sizeof(Mage));
mage->power = power;
mage->name = name;
printf("New Mage!\n");
return *mage;
}
void delete(Mage* mage){
free(mage); // -> this is not working
// how can I use free in an own function
// I don't want to write free in main
}
int main() {
Mage gandalf = create("Gandalf",50);
print(&gandalf);
delete(&gandalf);
printf("\n\n\n");
return 0;
}
如何在自己的函数中使用 free, 我不想在 main 中写 free, 这个源代码包含一个免费的, 该程序崩溃
有人知道吗?
我认为你的方法的主要问题是你实际上 return 在你的 create
函数中使用了一个 Mage 结构,而不是一个指向 Mage 结构的指针。
这意味着main
中的Mage gandalf实际上与create
中malloc分配的Mage不在同一个地址。
如果相反,您 return Mage(意思是地址)在 create
中,然后将 gandalf 声明为 Mage*(指向 Mage 结构的指针),那么您可以使用 gandalf直接(没有 &)在你的 print
和 delete
函数中,它会引用你最初在 create
中分配的同一个法师。
如果不清楚,如果您一直在阅读 C 教程,我相信您应该重新阅读章节提示。
希望对您有所帮助,祝您好运:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Mage{
int power;
char* name;
}typedef Mage;
void print(Mage* mage){
printf("Mage: %s, Power: %i", mage->name, mage->power);
}
Mage* create(char name[],int power){
Mage* mage = malloc(sizeof(Mage));
mage->power = power;
mage->name = name;
printf("New Mage!\n");
return mage;
}
void delete(Mage* mage){
free(mage);
}
int main() {
Mage *gandalf = create("Gandalf",50);
print(gandalf);
delete(gandalf);
printf("\n\n\n");
return 0;
}