我刚才有一个关于堆栈变量与堆变量如何工作的快速问题.据我了解,堆栈变量是函数返回后的变量,并且堆变量是持久的.但我真正感到困惑的是如何在函数内部分配堆变量:
int MyObject::addObject(const char* a){
MyObject newObject(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
说我有一个构造函数MyObject是newObject(const char * a).然后在这个函数调用它时,返回之后新构造的newObjectget被删除了吗?如果是,那么如何在函数内分配到堆呢?如果没有,你如何在以后清理你的记忆?
此外,析构函数的作用究竟是什么?何时被称为?
我已经看到了一些关于此的问题,但我似乎无法理解我的特定问题的任何答案.
我有一个模拟对象,让我们调用"object1",我发送给一些方法进行测试,让我们调用testMethod().所以我最终打电话了
testMethod(object1);
Run Code Online (Sandbox Code Playgroud)
用于检测.现在,在这个testMethod的某个地方,将会有一个调用方法的部分
object1.toggleDisplay();
Run Code Online (Sandbox Code Playgroud)
这是一种无效方法.如果方法是这样的
object1.getDisplay()
Run Code Online (Sandbox Code Playgroud)
实际上它返回的地方,我通常会这样做
EasyMock.expect(object1.getDisplay()).andReturn(whatever);
Run Code Online (Sandbox Code Playgroud)
但是,这是一个无效方法,我想测试一下,确实已经调用了一定次数.最简单的方法是什么?
谢谢
如何更改Jung Visualization Library中特定顶点的大小?
我正在阅读文档,但我不是非常熟悉java,我找不到任何好的例子.
编辑:必须有一些方法可以在不编写全新调试器的情况下实现此目的.我目前正在研究在现有java调试器之上构建的方法.如果有人对如何获取Java调试器已有的信息有任何想法(关于堆栈帧,变量,原始数据等),那将非常有用.
-
我想要做的是我有这个基于Java的框架/ API,我想编写一个为我的框架定制的eclipse插件调试器.这是一个简单的例子:
我有两个类,一个叫做范围,一个叫做变量.范围包含变量图.代码全部都在java中,但我使用这个范围变量关系几乎就像一种新语言,并且想要一个变量调试选项卡,它给出了当前活动范围的列表,其中包含当前存储的变量.这是一些代码:
import java.util.Hashtable;
public class Scope {
private Hashtable<String, Variable> variableList = new Hashtable<String, Variable>();
// constructor
public Scope(){
}
public void put(String key, Variable v){
variableList.put(key, v);
}
public Variable get(String key){
return variableList.get(key);
}
}
public class Variable {
private String value;
private String name;
public Variable(String aName, String aValue){
name = aName;
value = aValue;
}
public String getValue(){
return value;
}
public String getName(){
return name;
}
public void setValue(String aValue){ …Run Code Online (Sandbox Code Playgroud) 我必须做一些愚蠢的事情,因为这似乎是一个简单的操作.出于某种原因,我无法让这个命令为我工作.我已经安装了JDK,我进入了
/bin
Run Code Online (Sandbox Code Playgroud)
夹.我键入:
./javap -classpath /home/Matt/workspace/VariablesTestProject/src/ -s VariablesTest.Variable
Run Code Online (Sandbox Code Playgroud)
我的实际文件路径是
/home/Matt/workspace/VariablesTestProject/src/VariablesTest/Variable.java
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
ERROR:Could not find VariablesTest.Variable
Run Code Online (Sandbox Code Playgroud)
这样的命令有效:
./javap -s java.lang.String
Run Code Online (Sandbox Code Playgroud)
这些不是我尝试过的唯一命令.我真的尝试了我能想到的每一个变化,但没有一个能起作用.我的javac和java命令都工作正常.
有什么建议?
我最近看到一个公司的面试问题说:
一群人,你可以打电话
Know(i, j)询问是否i有人知道j,返回值是true(i知道j)或false(i不知道j).找到其他人都认识的人,但他不认识任何人.
我可以想到一个O(N^2)实现,这样你就可以将每个人与每个人的方法相匹配,从而消除任何真正认识某人的人.然而,我想不出比这更快的实现.
任何人都可以提供帮助或提示吗?
我最近得到了一个功课,询问是否给出一个键列表,可以制作一个没有任何冲突的哈希函数.做了一些研究,我发现给定一个预订的键列表,可以实现完美的哈希函数.
但是,我不太清楚该说些什么.任何人都可以给我一些关于如何完成哈希函数的建议,或者给一个预定义列表确实给哈希函数创建者做了什么,它允许一个完美的函数?
谢谢你的帮助.
如果我输入"test",为什么这段特殊的代码在strstr()上返回false?
char input[100];
int main()
{
fgets(input, 100, stdin);
printf("%s", input);
if(strstr("test message", input))
{
printf("strstr true");
}
}
Run Code Online (Sandbox Code Playgroud)
我以为strstr在第一个参数中搜索了第二个参数的实例?当我用一些文本替换输入或直接分配它时,它可以工作,但它似乎不适用于fgets.
我试图将stdin的fgets输入检测为空(当我按下enter而不输入任何内容时).这是我的计划:
int main()
{
char input[1000];
printf("Enter :");
fgets(input, 1000, stdin);
input[strlen(input) - 1] = '\0';
if(input != '\0'){
printf("hi");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想做某种条件,使它不打印任何东西,但显然这种方式是不对的.我也试过NULL,这没用.
谢谢!
如果这是错误的堆栈交换,我很抱歉; 它似乎是最接近一个可能对计算机体系结构有帮助的地方.对于计算机系统中的家庭作业问题,我被问到:
Consider three direct mapped caches X, Y, and Z each interpreting an
8-bit address slightly differently according to the {tag:setIdx:byteOffset}
format speci?ed. For each address in the reference stream, indicate whether the
access will hit (H) or miss (M) in each cache.
C1 C2 C3
Address Formats: {2:2:4} {2:3:3} {2:4:2}
Address References in Binary: 00000010, 00000100...
Run Code Online (Sandbox Code Playgroud)
我应该说每个地址引用是否会导致命中或错过,但我不知道从哪里开始.
对于格式,我认为标签意味着高速缓存块中数据的标记,setIdx意味着用于表示高速缓存中不同块的位数,而偏移量是可以选择的块内的特定字节.
我觉得我不明白什么是打击或错过.我认为有三种类型:强制,容量和冲突.如果我不知道缓存中已有什么,我怎么知道哪个是强制性的错过?在给定标签格式的情况下,如何判断缓存的容量?
感谢任何提示或提示.