小编Edu*_*edo的帖子

实现对象列表时如何处理动态分配?

我必须实现一个看起来像这样的函数:

MyList * sum (MyList * l1, MyList * l2) {
    MyList * newlist = new MyList();
    //Adds two objects and place the result in a third new list
    return newlist;
}
Run Code Online (Sandbox Code Playgroud)

该函数采用了两个列表,并将每个对象的总和放入一个新列表中.所述MyList类曾与指针指向节点next可变的,并且该列表内的对象的用户定义被.

这让我思考 - 我该如何处理来自对象和列表本身的动态内存分配?因为我必须为新列表的每个对象创建内存.

有没有办法将对象总和的值放在新列表中而不必依赖动态分配?也许做这样的事情:

Object result(node1->content + node2->content);
Node->content = &result; // will this object be erased when the function ends?
Run Code Online (Sandbox Code Playgroud)

而不是这个:

Node->content = new Object(node1->content + node2->content);
Run Code Online (Sandbox Code Playgroud)

我应该如何处理函数内部创建的新列表的生命周期,该函数将在函数结束后保存内存的变量?返回新列表时,我可以这样做吗?

MyList & sum (MyList * l1, MyList * l2) {
    //Create variable without allocating …
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-management dynamic-allocation dangling-pointer

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

如何正确停止等待来自 stdIn 的输入的线程?

我已经实现了一个简单的聊天应用程序,它接收消息并将它们重定向到所有用户,因为我正在学习并行编程。

客户端有两个线程:一个用于侦听服务器,另一个(主线程)用于写入服务器。

这些是用于实现这一点的代码:

主线:

    try {
        Thread listener = new Thread(new Receiver(in));
        listener.start();
        while (listener.isAlive()) {
            out.println(stdIn.readLine());
        }
        out.close();
        in.close();
        clientSocket.close();
    } catch (IOException e) {
        System.err.println("Error trying to send text to server" + e.getMessage());
    }
Run Code Online (Sandbox Code Playgroud)

可用于第二个线程:

public class Receiver implements Runnable {

    private BufferedReader in;

    public Receiver(BufferedReader serverInput) {
        this.in = serverInput;
    }

    @Override
    public void run() {
        String responseLine;
        try {
            while ((responseLine = in.readLine()) != null) {
                System.out.println(responseLine);

                if (responseLine.contains("Bye")) break;
            }
        } catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

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