小编Jan*_*ter的帖子

方法声明中的Java泛型

   private Map<Class<?>, Object> favorites = new HashMap<Class<?>, Object>();

    public <T> void putFavorite(Class<T> type, T instance) {
        //code to put the T Object in the Map
    }
Run Code Online (Sandbox Code Playgroud)

我在Joshua Bloch的UserGroupsAtGoogle
链接上看到了这段代码:http://www.youtube.com/watch?v = V1vQf4qyMXg

我想知道这<T>在方法的方法声明中意味着什么putFavorite.
我假设,这不是返回值,因为这已经是void.

java generics

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

C为堆栈分配堆栈空间大小

我有一个名为demo.c的简单程序,它为堆栈上长度为8的char数组分配空间

#include<stdio.h>


main()
{
        char buffer[8];

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为将从堆栈为8个字符分配8个字节,但如果我在gdb中检查这个,则从堆栈中减去10个字节.

我在我的Ubuntu 32位机器上用这个命令编译程序:

$ gcc -ggdb -o demo demo.c

然后我用以下方法分析程序:

$ gdb演示

$ disassemble main

(gdb) disassemble main
Dump of assembler code for function main:
   0x08048404 <+0>: push   %ebp
   0x08048405 <+1>: mov    %esp,%ebp
   0x08048407 <+3>: and    $0xfffffff0,%esp
   0x0804840a <+6>: sub    $0x10,%esp
   0x0804840d <+9>: mov    %gs:0x14,%eax
   0x08048413 <+15>:    mov    %eax,0xc(%esp)
   0x08048417 <+19>:    xor    %eax,%eax
   0x08048419 <+21>:    mov    $0x0,%eax
   0x0804841e <+26>:    mov    0xc(%esp),%edx
   0x08048422 <+30>:    xor    %gs:0x14,%edx
   0x08048429 <+37>:    je     0x8048430 <main+44>
   0x0804842b …
Run Code Online (Sandbox Code Playgroud)

c assembly gdb

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

对于由值返回的变量的相同地址

我有以下方法,通过值返回本地声明的Object:

Human Human::getLocalDeclaredHuman() {    
    Human human;
    std::cout << &human << std::endl;
    return human;
}
Run Code Online (Sandbox Code Playgroud)

我称之为这种方法:

Human a;
Human b = a.getLocalDeclaredHuman();
std::cout << &b << std::endl;
std::cout << b.getName() << std::endl;
Run Code Online (Sandbox Code Playgroud)

这是正在运行的程序的输出:
0x22fe58
0x22fe58
John Doe

因此,在方法中声明为local的变量human与变量b具有相同的地址.我认为按值返回将创建对象的副本,并且对象b具有另一个地址,例如在本地声明的对象人类.

我的问题:
如果这里b和人类有相同的地址,那么返回值和返回参考值之间的差异在哪里?

c++ methods reference

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

标签 统计

assembly ×1

c ×1

c++ ×1

gdb ×1

generics ×1

java ×1

methods ×1

reference ×1