我对"int"风格有疑问(unsigned int,long int,long long int).
当我们在32位系统和64位系统中对int和它的味道(比如说long int)之间做一些操作(*,/,+, - )时,"int"会发生隐式类型转换
例如 :-
int x; long long int y = 2000;
x = y; (更高的分配可能会发生更低的一次数据截断)我期待编译器为此发出警告但是我没有收到任何此类警告.这是由于隐式类型转换在这里发生的"x".我正在使用gcc和-Wall选项.是否会改变32位和64位的行为.
谢谢Arpit
我创建了一个以下程序,我希望在其中轮询我在程序中打开的文件的文件描述符。
#define FILE "help"
int main()
{
int ret1;
struct pollfd fds[1];
ret1 = open(FILE, O_CREAT);
fds[0].fd = ret1;
fds[0].events = POLLIN;
while(1)
{
poll(fds,1,-1);
if (fds[0].revents & POLLIN)
printf("POLLING");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它正在无限循环中。我期望在文件发生某些操作时运行循环。(它是一个 ASCII 文件)请帮助
我想知道哪一个负责清理堆栈
假设你有一个功能乐趣,让我们这样说:
var = fun(int x, int y, float z, char x);
Run Code Online (Sandbox Code Playgroud)
何时fun
被调用它将与参数一起进入堆栈然后当函数返回负责清理堆栈的人是它自己的函数还是将保存返回值的"var".
还有一件事,任何人都可以解释调用约定的概念吗?
struct inode_operations ext3_dir_inode_operations = {
.create = ext3_create,
.lookup = ext3_lookup,
}
Run Code Online (Sandbox Code Playgroud)
此结构分配给inode结构,并进一步分配给文件系统操作结构.我的问题是这面旗帜是什么.create
?我们在结构本身进行分配吗?或者是其他版本的C(C99,C89?)允许这种操作?
我希望我的问题很明确.
我可以在 Windows 中的命名管道句柄上使用选择和轮询吗?如果能举个例子就好了。(我对 Windows 编程很陌生)
如果其中一个进程出现故障而我正在另一端进行轮询,我是否会在另一个进程中收到该进程已关闭的任何错误消息?
我有一个堆栈损坏的核心转储.我尝试拆卸它,发现以下PLZ帮我分析它..
(gdb) bt
#0 0x55a63c98 in ?? ()
#1 0x00000000 in ?? ()
(gdb) disassemble 0x55a63c90 0x55a63ca8
Dump of assembler code from 0x55a63c90 to 0x55a63ca8:
0x55a63c90: add %cl,%dh
0x55a63c92: cmpsb %es:(%edi),%ds:(%esi)
0x55a63c93: push %ebp
0x55a63c94: add %al,(%eax)
0x55a63c96: add %al,(%eax)
**0x55a63c98: pusha**
0x55a63c99: lret $0x9
0x55a63c9c: subb $0x56,0xd005598(%ebp)
0x55a63ca3: push %ebp
0x55a63ca4: jo 0x55a63cc5
0x55a63ca6: sahf
0x55a63ca7: push %ebp
End of assembler dump.
(gdb) q
Run Code Online (Sandbox Code Playgroud)
这个pusha指令可以导致核心转储吗?
我有一个基本的疑问.我有一个使用共享库的进程.如果我在库中分配一些内存,那么它是哪个地址空间.(库或进程)在我看来,它是进程地址空间,因为一旦库被附加,它就是进程中的地址空间.
如果我错了,请纠正我.
谢谢Arpit
我想在下面添加两个向量是代码片段: -
#include <iostream>
#include <vector>
using namespace std;
int main()
{
unsigned int i = 0;
vector <float> v1;
vector <float> v2;
vector <float> v3;
cout << "Filling the Numbers\n";
for (i=5;i < 125 ; i = i + 5) {
v1.push_back(i/10);
v2.push_back(i/100);
}
cout << "Adding the numbers\n";
for (i = 0; i < v1.size(); i++) {
v3[i] = v1[i] + v2[i];
}
cout << "Printing the numbers\n";
for (i = 0; i < v3.size() ; i++) { …
Run Code Online (Sandbox Code Playgroud) 我希望使用相同的套接字fd进行读写操作.让我们说"fd"是我在那种情况下正在处理的那个
FD_SET(fd, &readfd);
FD_SET(fd,&writefd);
select(fd+1, &readfd, &writefd, 0,200):
Run Code Online (Sandbox Code Playgroud)
将保持良好或它将返回我的错误.
我认为因为writefd和readfd是不同的集合,所以在两个集合中都可以设置相同的fd.如果我错了,请纠正我.
谢谢Arpit
感谢您的快速回复..我可以在轮询POLLIN和POLLOUT中执行与相同fd相同的行为.