小编Jey*_*ram的帖子

堆管理

我知道有一个元数据存储辅助信息free(),realloc()当我们只提供指针时使用辅助信息.

我对堆很少有疑问.

  • 堆栈按进程分配.毫无疑问,但不确定堆.无论堆信息是否全局维护,否则每个进程都会有一些机制来保存有关该特定进程的已分配内存的信息.

  • 堆信息将如何维护?我猜哈希机制.我用Google搜索并尝试了SO.他们中的大多数人都将其解释为具体实施......就像那样.

linux heap operating-system

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

多线程BIOS

我想知道为什么即使我们有 4 核/8 核,BIOS 也是单线程的。最新的 UEFI 技术允许使用 GUI 实用程序。不实施多线程 BIOS 是否有任何具体原因。

multithreading bios uefi

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

双链表和二叉树的节点结构有什么区别?


我在接受采访时被问及双链表和二叉树的节点结构之间的区别.

双重链表结构

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)
  1. 在双向链表中,我们使用指针在线性排列的列表中向后和向前遍历.
  2. 但是左右指针用于访问左右节点的位置.

我发现节点结构没有任何区别,除了它们的使用方式.你能不能给我一些分歧?

c binary-tree linked-list

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

为什么填充必须是2的幂?

我正在做一些示例程序来探索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字节对齐.

c struct

3
推荐指数
2
解决办法
6892
查看次数

在Linux中使用.lib和.dll文件

我必须使一个项目在Linux机器上成功运行.现在我的项目在Windows机器上运行得很好.在Windows机器上它正在编译并正常工作.我的项目使用一个".lib"和一个".dll"文件在Windows上成功完成任务.我可以在linux机器上使用相同的.lib文件和.dll文件来成功构建项目吗?我正在使用G ++编译项目并使用GNU Makefile来完成任务.

如果我不能在Linux机器上使用.LIB和.DLL文件,我该怎么办?

c++ linux dll g++

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

没有成员的结构

虽然在这里引用内核代码,但是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)

请在这方面澄清一下.

c struct linux-kernel

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

如果没有这样的文件,输出错误

我试图找出特定类型的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 bash shell

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

如何从c程序中获取进程名称?

在linux中的C程序中,我们可以使用getpid()getppid()系统调用来获取进程的pid和ppid,

同样,是否有任何系统调用来获取进程/当前进程的名称?

linux embedded-linux

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

优化C代码 - 防止多个文件打开

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个文件的情况下使其更加高效或顺畅?

c optimization file bison

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

c中malloc之后的默认值是多少?

我有以下代码:

int *p;

p = (int*)malloc(sizeof(int) * 10);
Run Code Online (Sandbox Code Playgroud)

但是这个带有10个元素的int数组的默认值是多少?他们都是0?

c malloc

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