小编ran*_*eld的帖子

类的大小(以字节为单位)

有没有办法在ruby中查看类的已分配内存的大小?

我已经构建了一个自定义类,我想知道它在内存中的大小.那么有一个与sizeof()C 相似的功能吗?

我只是想尝试初始化一个新类

test = MyClass.new
Run Code Online (Sandbox Code Playgroud)

并试图找到一种方法来打印出已分配给内存的类的大小.

这在红宝石中甚至可能吗?

ruby memory methods class

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

允许ssh传入/传出并阻止除特定端口之外的所有传出

我正在尝试创建iptable规则,允许传入和传出ssh连接,然后允许到特定端口的出站连接,然后最终删除任何不匹配的东西.

这些是我提出的规则,SSH规则有效,但当我进入框中时,我似乎无法访问http(端口80),即使我允许它.谁能发现错误?

#!/bin/bash
#clear iptables
iptables -F
iptables -X

#set default policy to drop
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#accept everything no matter port on localhost
iptables -A INPUT -i lo -j ACCEPT

#allow established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow input on port 22, (established connections auto accepted)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#allow …
Run Code Online (Sandbox Code Playgroud)

linux bash networking iptables

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

Linux上C中的POSIX线程和全局变量

如果我有两个线程和一个全局变量(一个线程不断循环读取该变量;另一个线程不断循环写入该变量),那会不会发生什么事情呢?(例如:异常,错误)。如果是这样,请采取什么措施来防止这种情况发生。我正在阅读有关互斥锁的知识,它们允许互斥访问一个线程的变量。这是否意味着只有该线程可以读写该线程,而没有其他线程可以读写?

c linux multithreading

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

将结构作为void指针传递给函数

我正在尝试将结构的指针传递给函数,但是当我尝试访问结构时,结构中的最后一个变量丢失了1个字节的内存地址,从而导致使用该变量进行段错误.

typedef struct
{
  pthread_t tID;
  int tType;
}sThread;

sThread threads[MAX_THREADS];

typedef struct
{
  int tID;
  int sock;
  int arg_count;
  char *from_p, **arg_p;
}command_struct;

pthread_t Thread_Start(void *function, void *param)
{
  pthread_t tHandle;

  pthread_create(&tHandle, NULL, function, (void*)param);

  return tHandle;
}

void cmd_test(int sock, char *from_p, char **arg_p, int arg_count)
{ 
  if(thread_check(1))
  {
    send_line(sock, "%s :test thread already running", from_p);
    return;
  }

  command_struct test;

  test.tID = thread_add(1);
  test.arg_count = arg_count;
  test.arg_p = arg_p;

  threads[test.tID].tID = Thread_Start(test_cmd, &test);
}

void *test_cmd(void *param)
{ …
Run Code Online (Sandbox Code Playgroud)

c memory struct

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

libcurl apps的静态编译linux C(缺少库)

//to-long-didnt-read -> missing lgssapi_krb5 library and can't seem to find it
Run Code Online (Sandbox Code Playgroud)

我无法使用其中一个测试应用程序静态链接libcurl.

香港专业教育学院阅读论坛,有人说发出"curl-config --libs"命令并包含所有这些库,但命令只返回

~/Desktop# curl-config --libs
-lcurl
Run Code Online (Sandbox Code Playgroud)

而他们回来了

[root@zabbix ~]# curl-config --libs
-L/usr/kerberos/lib -lcurl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv -ldl -lidn -lssl -lcrypto -lz 
Run Code Online (Sandbox Code Playgroud)

我也读过这篇文章

使用c静态链接libcurl

我的输出是

~/Desktop# ldd /usr/lib/libcurl.so
        linux-gate.so.1 =>  (0xb78be000)
        libidn.so.11 => /usr/lib/libidn.so.11 (0xb7837000)
        liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0xb782a000)
        libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0xb77e2000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb77d9000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb77aa000)
        libz.so.1 => /lib/libz.so.1 (0xb7795000)
        libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb76fa000)
        libgcrypt.so.11 => /lib/libgcrypt.so.11 (0xb7686000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb752c000) …
Run Code Online (Sandbox Code Playgroud)

c linux static compilation libcurl

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

将字符串数组拆分为字符串数组数组

我正在寻找一种方法来分割这个字符串数组:

["this", "is", "a", "test", ".", "I", "wonder", "if", "I", "can", "parse", "this",
"text", "?", "Without", "any", "errors", "!"]
Run Code Online (Sandbox Code Playgroud)

由标点符号终止的组:

[
  ["this", "is", "a", "test", "."],
  ["I", "wonder", "if", "I", "can", "parse", "this", "text", "?"],
  ["Without", "any", "errors", "!"]
]
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法来做到这一点?迭代数组是最理智的方法,将每个索引添加到临时数组,并在找到标点符号时将该临时数组附加到容器数组中?

我正在考虑使用slicemap,但我无法弄清楚它是否可能.

ruby arrays string grouping slice

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

释放指针

这只是一个普遍的问题,但是例如在Windows上,如果我创建一个指向要hostent与之一起使用的结构的指针,gethostbyname()我必须处理该指针的内存或是否为我处理.我的假设是因为我没有特别要求malloc它不是我的工作.谁能为我澄清一下这个?

谢谢

c malloc pointers

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

如何将范围分成N个部分

我想知道如何将范围拆分为ruby中的N个部分,同时将它们添加到生成的每个范围的基于零的值的哈希中.

例如:

range = 1..60
p split(range, 4)
#=> {1..15 => 0, 16..30 => 1, 31..45 => 2, 46..60 => 3}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了如何在Ruby中返回数组的一部分?关于如何将范围切割成数组,以及其他一些关于如何将切片转换回范围的方法,但我似乎无法将所有碎片拼凑在一起以创建我想要的方法.

谢谢您的帮助

ruby hash split range slice

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

将字符串数组连接到带引号的逗号分隔列表中

如果我有一个像这样的字符串数组:

arr = ["one", "two", "three"]
Run Code Online (Sandbox Code Playgroud)

如何将它转换为反引号引用的逗号分隔字符串,如下所示:

"`one`, `two`, `three`"
Run Code Online (Sandbox Code Playgroud)

我已经使用三个调用完成了它:

arr = arr.join "`, `"
arr = arr.prepend "`"
arr = arr += "`"
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更清洁的方法来实现这一点,或者是否有更好的功能使用join.优选地,一个衬里.

ruby arrays string

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

pthread_kill没有杀死线程C linux

我正在制作一个小项目,并将其纳入更大的项目.它的作用基本上是跟踪通过将它们添加到主结构而创建的线程,主结构跟踪线程的作用(主要功能)和pthread_t id.另一个struct跟踪要传递给函数的数据以及pthread_t id存储在threads []中的元素号.它有点micky鼠标,它跳了一下但是除了什么时候杀死线程之外它都有效.我得到没有段错误和没有错误,程序完成得很好,但是当调用pthread_kill()时,线程不会被杀死(函数返回0表示没有错误并且它有效)尽管线程继续运行直到主应用程序返回.

c linux multithreading pthreads

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

ld:对'eax'的未定义引用

我从来没有把这个错误包含在我的旧linux机器上(两者都是intel 32bit),所以我很茫然.

我试图组装和链接汇编代码(这是非常简单的,应该工作),但是ld给出了错误

rs.o: In function `_start':
(.text+0x11): undefined reference to `eax'
Run Code Online (Sandbox Code Playgroud)

有问题的pushl %eax线是线.我只需要将0的单个字节推送到堆栈,所以我决定使用xor'd eax寄存器.但是在使用代码组装时pushb给了我一个" 无效后缀或操作数推送 "错误,如果我尝试使用汇编很好但链接器对我大喊大叫.aspushb %alpushl %eax as

这是代码.

.section .data

.section .text

.global _start

_start:

xorl %eax, %eax

#sys_socketcall(int call, __user *args)
#sys_socket(int domain, int type, int protocol)

pushl %eax          #protocol: 0
pushl $1            #type: SOCK_STREAM
pushl $2            #domain: AF_INET
movL $1, %ebx       #sys_socket
movl $102, %eax    #sys_socketcall
int $0x80

movl $eax, %ebx  #move socket fd to …
Run Code Online (Sandbox Code Playgroud)

linux x86 assembly ld

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

在C中,我是否需要在释放结构时手动释放结构中的指针?

我正在学习C中的内存管理.

我有一个指向结构的指针,我malloc通过它来调整大小

some_struct *mystruct = malloc(sizeof(some_struct));
Run Code Online (Sandbox Code Playgroud)

我后来用free在那个结构上.

在这个结构中有三个char *指针; 我也记录了他们的记忆.

在我释放之前我是否还必须释放他们的记忆,*mystruct否则*mystruct还会释放结构中的内存?

c memory pointers

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