有没有办法在C中实现函数重载?我正在寻找简单的函数来重载像
foo (int a)
foo (char b)
foo (float c , int d)
Run Code Online (Sandbox Code Playgroud)
我认为没有直接的方式; 我正在寻找解决方法,如果存在的话.
通常的做法是在malloc()之后检查NULL(是否成功分配内存),有些事情
void *ptr = malloc(10);
if (ptr != NULL) {
// do some thing usefull
} else {
// no memory. safely return/throw ...
}
Run Code Online (Sandbox Code Playgroud)
在内核中启用内存过量使用,是否有可能获得NULL?我应该遵循宗教检查每次分配NULL的做法吗?尽管有积极的过度使用机制(我猜值1),malloc会返回NULL吗?
事实上,Android内核使用内存过量使用(不确定值,很想知道它(过度使用值)及其意义).Android中的一些框架源代码(C/C++)代码(可能是第三方)不会检查NULL,也不会在分配后捕获bad_alloc.我错过了什么吗?
关于过度使用内存,SO中有一些线程,但没有一个解决了我的困惑.
编辑:如果采用积极的过度使用,则不会返回NULL(假设1).当没有可用的物理内存并尝试访问分配的内存(写入分配的内存)时,OOM将终止某个进程并为应用程序分配内存,直到它被依次终止(假设2).在任何一种情况下,我都没有看到任何需要检查NULL(内存被分配或进程被杀死).我的假设是对的吗?
便携性不是这个问题的关注点.
为什么STL使用严格弱排序的比较函数?为什么不能进行部分订购?
有没有办法在C中创建一个原子函数.
我不是在寻找便携式解决方案.(平台寻找 - Win,Linux)
typedef struct temp
{
int a,b;
char *c;
temp(){ c = (char*)malloc(10);};
~temp(){free(c);};
}temp;
int main()
{
temp a;
list<temp> l1;
l1.push_back(a);
l1.clear();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给出分段错误.
我在C中编写了一些代码,我惊讶地发现它执行的时间比我预期的要长.我想知道哪些操作成本高昂以及如何摆脱它们.
我使用赋值语句,条件(嵌套),循环,函数调用和回调.
对常见的C性能缺陷有什么好的参考?
我可以使用一个好的剖析器吗?
谢谢你们
感谢您的所有投入.你是绝对正确的:它的算法可以减慢事情(大幅度).虽然通过编码实践可以获得一点性能提升 - 我100%确信只有错误的算法才能大大减慢速度.
事实上:我正在研究RB树并按升序插入节点.花了很多时间(和Binary Search Tree(Skewed)一样糟糕).在寻求你的建议后,我检查了算法,我在平衡方面犯了一个错误,使树倾斜(倾斜).我纠正了.
再次感谢您的建议.
什么是具有以下功能的最佳压缩算法:
请与指标一起建议:压缩率,压缩和解压缩的算法复杂度(如果可能)?
void *在C中使用有许多缺点(与内存相关,类型相关,效率明智......).尽管如此,我们还是使用它们来提供灵活性.
列出使用的缺点/缺点void *(以及C中的首选解决方案 - 如果可能的话).
编辑: 请通过以下链接:http: //attractivechaos.wordpress.com/2008/10/02/using-void-in-generic-c-programming-may-be-inefficient/
c ×4
c++ ×2
memory ×2
stl ×2
algorithm ×1
android-ndk ×1
atomic ×1
compression ×1
malloc ×1
operations ×1
overloading ×1
performance ×1
pointers ×1