小编use*_*028的帖子

为什么Malloc()关心边界对齐?

我听说malloc()根据正在分配的类型来调整内存.例如,从" 理解和使用C指针 "一书中:

分配的内存将根据指针的数据类型进行对齐.例如,一个四字节整数将分配在一个可被4整除的地址边界上.

如果我遵循,这意味着 int *integer=malloc(sizeof(int));将分配在一个可被4整除的地址边界上.即使没有(int *)在malloc上施放.

我在聊天服务器上工作; 我读到了与s 类似的效果struct.

我不得不问:从逻辑上讲,为什么地址边界本身可以被整除呢?将一组内存分配到n*sizeof(int)地址上使用整数的调整有129什么问题?

我知道指针算法是如何工作的*(integer+1),但我无法弄清楚边界的重要性......

c c++ pointers memory-management

24
推荐指数
3
解决办法
1707
查看次数

PHP:stream_socket_server()

我有一个自制的PHP TCP聊天服务器,但是它没有检测远程断开连接的方法。

如果有人知道一种方法来获取stream_socket_server()并吐出与之连接的所有内容,我将不胜感激。

然后,您可以在psuedocode中运行这样的循环:

$main_socket=stream_socket_server("tcp://",....)

//Do Something.... say, wait for a connection (with stream_socket_accept())?

for (each CONNECTION in $main_socket)
{
//Do something with or to that connection
}

//Loop back... if you need to say, wait for another connection
Run Code Online (Sandbox Code Playgroud)

或者,我可以检查当前是否连接了使用$ stream_socket_accept()创建的变量。

在我弄清楚这个项目之前,这个项目是失败的。我将感谢任何可以帮助我解决这一问题的人!

php php-socket

5
推荐指数
1
解决办法
1596
查看次数

bash如何处理嵌套引号?

我需要使用如下语法运行命令:
runuser -l userNameHere -c '/path/to/command arg1 arg2'

不幸的是,我必须'在命令本身中嵌入其他字符,我不能告诉bash正确解释它们.我想要运行的命令实际上是:

runuser -l miner -c 'screen -S Mine -p 0 -X eval 'stuff "pwd"\015''

不幸的是,bash似乎正在击中第二个'并且呕吐.这是错误:
-bash: screen -S Mine -p 0 -X eval stuff: No such file or directory,显然它没有超越'.

如何将其作为一个命令嵌套?谢谢!

linux bash quotes command-line gnu-screen

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

*指针数组的某些*成员未初始化为null?

struct findaddress {
     struct findaddress *next[11];
     struct user *myuser;
};
int main(void){
struct findaddress *findhead=(struct findaddress *)(malloc(sizeof(struct findaddress)));
    int i=0;
    for (i;i!=11;i++){
        if (findhead->next[i]==NULL)puts("success");else puts("fail");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

对我来说,令人不安的结果是:

fail
fail
success
success
success
success
success
success
success
success
success
Run Code Online (Sandbox Code Playgroud)

知道为什么底部的两个指针都失败了,而其他指针正在传递.

有人可以这么善良地开导我吗?

c malloc linked-list

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

C++为什么这不提供整数的系统最大大小?

所以,如果我理解正确,整数是一个字节的集合,它代表基数为二的格式,如果你愿意的话.

因此,如果我有unsigned int test = 0,那么实际上应该只包含一个位字段,所有这些都是零.然而,

unsigned int test=0;
test=~test;
Run Code Online (Sandbox Code Playgroud)

产生-1.

我会认为这将填满所有的位'1',使整数与该系统上的整数一样大....

谢谢你的帮助!

c c++ integer bit-manipulation

0
推荐指数
1
解决办法
139
查看次数

细微的记忆泄漏,这是常见的做法吗?

我想我可能会在这里创建内存泄漏:

   void commandoptions(){
      cout<< "You have the following options: \n 1). Buy Something.\n  2).Check you balance. \n3). See what you have bought.\n4.) Leave the store.\n\n Enter a number to make your choice:";
      int input;
      cin>>input;
      if (input==1) buy();
      //Continue the list of options.....
      else
      commandoptions(); //MEMORY LEAK IF YOU DELETE THE ELSE STATEMENTS!
   }

inline void buy(){
    //buy something
    commandoptions();
}
Run Code Online (Sandbox Code Playgroud)

假设命令选项刚刚在程序运行时首次出现.用户选择"1",表示由commandoptions()子例程执行buy()子例程.

在执行buy()之后,它再次调用commandoptions().

第一个命令选项()是否会返回?或者我只是做了内存泄漏?

如果我创建一个除了调用自身之外什么都不做的子例程,它将导致堆栈溢出,因为该子例程的其他"循环"永远不会退出.我在这做/接近这样做吗?

请注意,我inline在购买时使用了关键字......这有什么不同吗?

我很高兴地问我的教授,他似乎没有.:/

编辑:我不敢相信我没有使用循环,但谢谢,我学到了一些关于我术语的新知识!

c++ memory-leaks memory-management

0
推荐指数
3
解决办法
415
查看次数

类可以互相引用吗?

我有一些在同一个文件中按顺序声明的类,但是,我希望它们能够相互引用.但是,类只能由它们之上的类声明.

我可以通过将它们分成不同的.h文件并#include根据需要互相拥有它来实现这一点吗?或者可以在将它们保存在同一文件中的情况下完成>

或者这是不好的做法?

(具体来说,我有一个A类实例需要跟踪不同类型的B类的多个实例,这些实例可能尝试与A类没有特定的顺序进行交互;我需要保持特定于尝试与A类的一个实例化交谈的B类......)

c++ oop

0
推荐指数
2
解决办法
131
查看次数