我知道有一个元数据存储辅助信息free(),realloc()当我们只提供指针时使用辅助信息.
我对堆很少有疑问.
我想知道为什么即使我们有 4 核/8 核,BIOS 也是单线程的。最新的 UEFI 技术允许使用 GUI 实用程序。不实施多线程 BIOS 是否有任何具体原因。
我在接受采访时被问及双链表和二叉树的节点结构之间的区别.
双重链表结构
typedef struct
{
int data;
struct node * next;
struct node * prev;
}node;
Run Code Online (Sandbox Code Playgroud)
二叉树结构
typedef struct
{
int data;
struct node * left;
struct node * right;
}node;
Run Code Online (Sandbox Code Playgroud)
我发现节点结构没有任何区别,除了它们的使用方式.你能不能给我一些分歧?
我正在做一些示例程序来探索C,并想知道为什么结构填充只能以2的幂来完成.
#include <stdio.h>
#pragma pack(push, 3)
union aaaa
{
struct bbb
{
int a;
double b;
char c;
}xx;
float f;
};
#pragma pack(pop)
int main()
{
printf("\n Size: %d", sizeof(union aaaa));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在编译时
warning: alignment must be a small power of two, not 3 [-Wpragmas]
warning: #pragma pack (pop) encountered without matching #pragma pack (push) [-Wpragmas]
Run Code Online (Sandbox Code Playgroud)
似乎#pragma没有效果.输出仅为24.即4字节对齐.
我必须使一个项目在Linux机器上成功运行.现在我的项目在Windows机器上运行得很好.在Windows机器上它正在编译并正常工作.我的项目使用一个".lib"和一个".dll"文件在Windows上成功完成任务.我可以在linux机器上使用相同的.lib文件和.dll文件来成功构建项目吗?我正在使用G ++编译项目并使用GNU Makefile来完成任务.
如果我不能在Linux机器上使用.LIB和.DLL文件,我该怎么办?
虽然在这里引用内核代码,但是struct page;没有成员定义(我猜这不是前向声明).
但是这篇文章中接受的答案是不允许的.
然后我试了一个样本,
#include <stdio.h>
struct page;
struct arm_vmregion
{
unsigned long vm_start;
unsigned long vm_end;
struct page *vm_pages;
int vm_active;
const void *caller;
};
int main()
{
struct arm_vmregion aa;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它编译成功
empty_struct.c: In function ‘main’:
empty_struct.c:15:22: warning: unused variable ‘aa’ [-Wunused-variable]
Run Code Online (Sandbox Code Playgroud)
请在这方面澄清一下.
我试图找出特定类型的no.of文件.如果文件存在则此脚本正常工作,否则执行一次循环(预计不会运行).
echo "Checking for text files..."
j=0
for i in *.txt;
do
echo $i;
j=`expr $j + 1`;
done
if [ $j -ge 0 ];then
echo "No.of Text files:"$j
else
echo "No Text files."
fi
Run Code Online (Sandbox Code Playgroud)
可能还有其他一些方法可以达到同样的效果ls *.txt |xargs ....但作为一个新手,我想知道发布的脚本中的问题.我请你分享你在这方面的知识.
在linux中的C程序中,我们可以使用getpid()和getppid()系统调用来获取进程的pid和ppid,
同样,是否有任何系统调用来获取进程/当前进程的名称?
yyin = fopen("input_file.txt","r");
while ((nread = fread(buf, 1, sizeof buf, yyin)) > 0){
fwrite(buf, 1, nread, stdout);
}
fclose(yyin);
yyin = fopen("input_file.txt","r");
yyparse();
fclose(yyin);
Run Code Online (Sandbox Code Playgroud)
如您所见,我多次打开同一个文件.首先,我想在我的cmd/terminal中打印输出; 然后我想启动解析器.问题很明显:每个打开过程都会花费资源,但是fread和fwrite的组合似乎"清理"了我的输入文件,因此yyparse没有得到任何进一步的输入并且基本上保持空白.
您是否知道如何在不打开2个文件的情况下使其更加高效或顺畅?
我有以下代码:
int *p;
p = (int*)malloc(sizeof(int) * 10);
Run Code Online (Sandbox Code Playgroud)
但是这个带有10个元素的int数组的默认值是多少?他们都是0?
c ×5
linux ×4
struct ×2
bash ×1
binary-tree ×1
bios ×1
bison ×1
c++ ×1
dll ×1
file ×1
g++ ×1
heap ×1
linked-list ×1
linux-kernel ×1
malloc ×1
optimization ×1
shell ×1
uefi ×1