有没有办法在ruby中查看类的已分配内存的大小?
我已经构建了一个自定义类,我想知道它在内存中的大小.那么有一个与sizeof()
C 相似的功能吗?
我只是想尝试初始化一个新类
test = MyClass.new
Run Code Online (Sandbox Code Playgroud)
并试图找到一种方法来打印出已分配给内存的类的大小.
这在红宝石中甚至可能吗?
我正在尝试创建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) 如果我有两个线程和一个全局变量(一个线程不断循环读取该变量;另一个线程不断循环写入该变量),那会不会发生什么事情呢?(例如:异常,错误)。如果是这样,请采取什么措施来防止这种情况发生。我正在阅读有关互斥锁的知识,它们允许互斥访问一个线程的变量。这是否意味着只有该线程可以读写该线程,而没有其他线程可以读写?
我正在尝试将结构的指针传递给函数,但是当我尝试访问结构时,结构中的最后一个变量丢失了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) //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)
我也读过这篇文章
我的输出是
~/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) 我正在寻找一种方法来分割这个字符串数组:
["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)
有一个简单的方法来做到这一点?迭代数组是最理智的方法,将每个索引添加到临时数组,并在找到标点符号时将该临时数组附加到容器数组中?
我正在考虑使用slice
或map
,但我无法弄清楚它是否可能.
这只是一个普遍的问题,但是例如在Windows上,如果我创建一个指向要hostent
与之一起使用的结构的指针,gethostbyname()
我必须处理该指针的内存或是否为我处理.我的假设是因为我没有特别要求malloc
它不是我的工作.谁能为我澄清一下这个?
谢谢
我想知道如何将范围拆分为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中返回数组的一部分?关于如何将范围切割成数组,以及其他一些关于如何将切片转换回范围的方法,但我似乎无法将所有碎片拼凑在一起以创建我想要的方法.
谢谢您的帮助
如果我有一个像这样的字符串数组:
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
.优选地,一个衬里.
我正在制作一个小项目,并将其纳入更大的项目.它的作用基本上是跟踪通过将它们添加到主结构而创建的线程,主结构跟踪线程的作用(主要功能)和pthread_t id.另一个struct跟踪要传递给函数的数据以及pthread_t id存储在threads []中的元素号.它有点micky鼠标,它跳了一下但是除了什么时候杀死线程之外它都有效.我得到没有段错误和没有错误,程序完成得很好,但是当调用pthread_kill()时,线程不会被杀死(函数返回0表示没有错误并且它有效)尽管线程继续运行直到主应用程序返回.
我从来没有把这个错误包含在我的旧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
给了我一个" 无效后缀或操作数推送 "错误,如果我尝试使用汇编很好但链接器对我大喊大叫.as
pushb %al
pushl %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) 我正在学习C中的内存管理.
我有一个指向结构的指针,我malloc
通过它来调整大小
some_struct *mystruct = malloc(sizeof(some_struct));
Run Code Online (Sandbox Code Playgroud)
我后来用free
在那个结构上.
在这个结构中有三个char *
指针; 我也记录了他们的记忆.
在我释放之前我是否还必须释放他们的记忆,*mystruct
否则*mystruct
还会释放结构中的内存?