在我的代码中,几乎每个函数都有一个或多个malloc调用,每次我必须执行以下操作:
char *ptr = (char *)malloc(sizeof(char) * some_int);
if (ptr == NULL) {
fprintf(stderr, "failed to allocate memory.\n");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
这是额外的四行代码,如果我在使用malloc后每次添加它们,我的代码长度会增加很多..那么有一种优雅的方法来处理这个问题吗?
非常感谢!!
我想编写一个链表,可以让数据字段存储任何内置或用户定义类型.在C++中,我只使用模板,但如何在C中完成此操作?
我是否必须为我想要存储的每种数据类型重新编写链表结构及其一系列操作?联合会无法工作,因为它可以存储预定义的类型.
我遇到了一个问题,我想定义一个地图,它按照第一个降序排列内部.如果第一个不是主类型,就像它是一个类,我可以重载该类中的"<",但我不知道如何处理int类型.有什么建议吗?
非常感谢!!
我在调用函数中有以下代码
int matrix[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};
find_index(matrix);
Run Code Online (Sandbox Code Playgroud)
而find_index的原型是:
void find_index(int** m);
Run Code Online (Sandbox Code Playgroud)
我收到编译错误:无法将'int(*)[3]'转换为'int**'
无论如何我可以解决这个问题?谢谢!
更新:
有没有办法我可以在第二个函数中使用m [a] [b]运算符而不是传递列号并执行m [a*col_num + b]?
我正在阅读linux内核代码,遇到类似以下内容:
typedef void (* gps_location_callback)(GpsLocation* location?
Run Code Online (Sandbox Code Playgroud)
然后它可以像以下一样使用:
gps_location_callback location_cb;
Run Code Online (Sandbox Code Playgroud)
有人能告诉我这种typedef是什么意思吗?我以前从未见过这样的东西..谢谢!
我试图使用free()释放动态分配的内存,但我发现它的作用是让参数指针指向某个新位置,并保留先前指向的位置,内存未被清除.如果我再次使用malloc,指针可能指向这个凌乱的块,它已经充满垃圾,这真的很烦人..
我是C的新手,我认为c ++中的delete []没有这个问题.有什么建议吗?
谢谢