我想编写一段代码,用于在适当的位置将数字插入到排序的数组中(即插入后数组仍应保持排序)
我的数据结构不允许重复.
我打算做这样的事情:
还有其他更好的方法吗?
是否存在类似于pthread_cancel,pthread_testcancel等的Windows本机API?
如果没有,我们如何使用Windows中的pthread_cancel机制模拟从另一个线程中取消一个线程?
编码时我们应该考虑对堆栈上创建的变量总大小的限制吗?如果是,我们应该根据什么来决定它?它依赖于操作系统,内存可用性等吗?有没有可以检查这个的编译器选项?
方向上的任何指针也会有所帮助.
Windows本机API是否支持计时器?
我知道Windows上的POSIX实现支持定时器,但我对Windows SDK API感兴趣.
在Linux中,如果我们recv从一个线程调用阻塞并从另一个线程关闭同一个套接字,recv则不退出.
为什么?
如果fwrite&fclose从同一个文件描述符的两个线程并行调用会发生什么?
如果通过dlopen和dlclose机制使用共享库(或DLL),并且如果创建的共享库有一些全局变量,其内存来自堆,那么当调用dlclose时这些变量和内存会发生什么?
如果在同一个进程中再次调用dlopen,那么行为是什么?
在提到malloc调用的结构大小时,最好提一下结构的名称或解引用的结构指针变量吗?
例:
struct ExampleStruct
{
int x;
char arr[40];
};
int main()
{
struct ExampleStruct *Y = NULL;
Y = malloc(sizeof(struct ExampleStruct)); //Is this better?
Y = malloc(sizeof(*Y)); //Is this better?
}
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢,sizeof(struct ExampleStruct)因为我看到许多开发人员在第二种方法中错误地错过了'*',即他们错误地输入它malloc(sizeof(Y)),在这种情况下,分配的内存将只有4个字节.但是,我已经看到它也被普遍使用.
如何在非排序数组中快速搜索?除了线性搜索之外,我无法想到任何其他搜索机制.
任何指针都会有所帮助.