小编Rac*_*hel的帖子

处理malloc错误的巧妙方法,而不检查每次malloc调用后是否返回NULL?

在我的代码中,几乎每个函数都有一个或多个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

7
推荐指数
2
解决办法
1万
查看次数

C语言中是否存在C++模板?如果没有,如何重用不同数据类型的结构和函数?

我想编写一个链表,可以让数据字段存储任何内置或用户定义类型.在C++中,我只使用模板,但如何在C中完成此操作?

我是否必须为我想要存储的每种数据类型重新编写链表结构及其一系列操作?联合会无法工作,因为它可以存储预定义的类型.

c

6
推荐指数
1
解决办法
783
查看次数

operator <overload for std :: map的int类型比较?(我希望它按降序排序..)

我遇到了一个问题,我想定义一个地图,它按照第一个降序排列内部.如果第一个不是主类型,就像它是一个类,我可以重载该类中的"<",但我不知道如何处理int类型.有什么建议吗?

非常感谢!!

c++ stl

4
推荐指数
1
解决办法
1679
查看次数

无法从int [] []转换为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]?

c++ arrays

1
推荐指数
1
解决办法
589
查看次数

typedef void(*something)(someclass*something) - 这是什么意思?从未见过像这样的typedef用法

我正在阅读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是什么意思吗?我以前从未见过这样的东西..谢谢!

c linux-kernel

1
推荐指数
1
解决办法
788
查看次数

而不是只使用free()并指针指向一些新块,如何真正清空以前指向的内存块?

我试图使用free()释放动态分配的内存,但我发现它的作用是让参数指针指向某个新位置,并保留先前指向的位置,内存未被清除.如果我再次使用malloc,指针可能指向这个凌乱的块,它已经充满垃圾,这真的很烦人..

我是C的新手,我认为c ++中的delete []没有这个问题.有什么建议吗?

谢谢

c

0
推荐指数
1
解决办法
143
查看次数

标签 统计

c ×4

c++ ×2

arrays ×1

linux-kernel ×1

stl ×1