小编Mat*_*att的帖子

使用C++中的跳转表实现switch语句

我正在努力提高解析器的速度.并且switch-case,有时它很有用,但我发现它仍然很慢.不确定 - 如果C++支持此功能(地址检查点(带附加参数)),那就太棒了!

简单的例子:

enum Transport //MOTORBIKE = 1, CAR = 2,  ...  SHIP = 10
Transport foo = //unknown

    switch(foo)
{
    case MOTORBIKE : /*do something*/ break;
    case CAR : /*do something*/ break;
    //////////////////////////
    case SHIP : /*do something*/ break;
}
Run Code Online (Sandbox Code Playgroud)

如果变量fooSHIP,至少程序必须重新检查该值最多十次! - >它仍然很慢.

如果C++支持检查点:

Transport foo = //unknown
__checkpoint smart_switch;

goto (smart_switch + foo); //instant call!!!

smart_switch + MOTORBIKE : /*do something*/ goto __end;
smart_switch + CAR : /*do …
Run Code Online (Sandbox Code Playgroud)

c++ performance switch-statement memory-address

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

参数中的Java访问变量

我希望能够访问传递给我的方法的变量.我知道C可能有某种方式将某个地址作为参数传递,然后将其称为指针并能够使用该变量.无论如何,这是一个例子.

void myFunction(address to variable) {
    *variable = "example";
}
Run Code Online (Sandbox Code Playgroud)

然后将其称为:

myFunction(&somevariable);
Run Code Online (Sandbox Code Playgroud)

java variables pointers arguments

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

&在函数声明返回类型中

以下是什么意思?

class Something
{
 public:
   int m_nValue;

   const int& GetValue() const { return m_nValue; }
   int& GetValue() { return m_nValue; }
};
Run Code Online (Sandbox Code Playgroud)

此代码取自此处.

c++ return function memory-address

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

如何在Go中引用接口类型?

我有这两种类型:

type Routing map[string]Handler

type Handler interface {
    Handle()
}
Run Code Online (Sandbox Code Playgroud)

我有一个MyHandler满足接口的类型,它看起来像这样:

type MyHandler struct {
}

func (this *MyHandler) Handle() {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

// routes is created at the beginning of the program and available
// throughout the lifetime of the script

routes := Routing {
    "/route/here": MyHandler,
})

// ...

// and in another method, this line may be executed several times:

new(routes["/route/here"]).Handle()
Run Code Online (Sandbox Code Playgroud)

我在最后一行收到此错误:

routes ["/ route/here"]不是类型

当我将最后一行更改为

routes["/route/here"].Handle()
Run Code Online (Sandbox Code Playgroud)

它显然有效.但是,它只使用Handler的一个实例...我希望每次执行最后一行时都有一个新实例.如何在Handler每次执行最后一行时实例化一个新实例?

(我假设在使用时new,旧的将在使用后进行垃圾收集.请注意,我没有保存我创建的实例;我只关心调用该 …

types interface go

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

在Nginx中使用Lua将请求传递给FastCGI

使用在Lua支持下编译的nginx,我们如何对FastCGI处理程序进行某种子请求,就像nginx的fastcgi_pass指令一样?

我想做的是这样的:

location = / {
    access_by_lua '
        res = ngx_fastcgi.pass("backend")
    ';
}
Run Code Online (Sandbox Code Playgroud)

(显然,这是行不通的。)

我在HttpLuaModule上浇注,我看到提到了ngx_fastcgingx.location.capture,这显然使

对配置了磁盘文件目录或其他任何Nginx C模块(例如... ngx_fastcgi,...)的其他位置的非阻塞内部请求

但是随后跟随的链接ngx_fastcgi将我带到HttpFastcgiModule,它仅说明nginx指令,而不说明Lua可编写脚本的命令。是否ngx.location.capture使用正确的功能?(顺便说一下,这些请求将是到达localhost另一个端口,例如9000或9001。)

如何在nginx中使用Lua将请求转发或进行子请求到FastCGI端点?

lua fastcgi nginx

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

32位地址位置混淆...(C编程)

在C中,我们可以在变量前放置"&"来计算出该变量的地址.我有一台32位机器.每当我在控制台中打印地址时,控制台都会显示一个7位数的基数10.我只是想知道这个数字(10 ^ 7)与32位机器有什么关系.(2 ^ 32)谢谢

c pointers memory-address

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

c ++地址字符串 - > long

我有一个地址的例子:0x003533,它是一个字符串,但要使用它我需要它是一个很长但我不知道该怎么做:S有任何人的解决方案吗?

所以字符串:"0x003533"到长0x003533 ??

c++ string memory-address long-integer

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

C指针 - 不同的地址

我正在尝试学习C指针,但我无法理解某些东西......以下代码:

#include <stdio.h>

void foo(int *x, int *y);

void foo(int *x, int *y) {
    printf("x = %p\ny = %p\n", &x, &y);
    *x = 5;
    *y = 6;
}

int main(void) {
    int a, b;
    printf("a = %p\nb = %p\n", &a, &b);
    foo(&a, &b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么地址不同?第一个printf(主)输出两个地址.另一个printf(foo)输出不同的地址.我将地址传递给foo(&operator).

c pointers memory-address

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

8086存储在RAM中的单个内存地址中多少位?

8086的地址总线为20位宽.这意味着它可以在RAM中寻址1048576个不同的地址.自从最大 8086可以处理的内存为1 MiB,单个内存单元可以存储1个字节.

因此像0xffff0这样的随机逻辑地址具有8位或1字节的"存储".

现代Core i7有一个36位的地址总线,这意味着他可以寻址68719476736不同的地址.每个逻辑地址一个字节,他可以处理68719476736字节或64 GiB,这正是最大值.内存Core i7可以处理.

这个解释是否正确,我认为对吗?

所以自30年以来最大 逻辑内存地址的存储正好是1个字节.

memory cpu ram x86 memory-address

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

手动设置指针值

我正在使用C.我正在尝试做的是一个函数,它将返回一个包含指向对象的地址的int.然后,使用我收到的int(包含地址),并构建一个指向该地址的指针.

示例:

MyClass* obj = SomeMethodReturningAPointerOfMyClass();
int address = (int) &obj;
return address;
Run Code Online (Sandbox Code Playgroud)

我认为它适用于这一部分.我得到的值是-4197276.(也许我完全错了?)

然后,另一方面,我想做的事情如下:

MyClass* obj = (MyClass*) address;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我无法访问任何obj方法而不会收到错误.


我找到了一种方法:

MyClass* obj = SomeMethodReturningAPointerOfMyClass();
machine->registers[2] = (int)obj;
Run Code Online (Sandbox Code Playgroud)

然后,在我收到整数的另一种方法中:

MyClass* obj = (MyClass*)address;
Run Code Online (Sandbox Code Playgroud)

我可以完美地完成对象!可能不是那么干净但它应该为它的用途做好工作!

感谢所有花时间回答的人!

c int pointers pointer-address

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