小编Nic*_*ton的帖子

当程序退出时,是否有理由在C++中调用delete?

main例如,在我的C++ 函数中,如果我有一个指向使用堆内存的变量的指针(而不是堆栈内存) - 在我的应用程序退出后会自动解除分配吗?我会这么认为.

即便如此,即使您认为永远不会在退出时自动释放内存的情况下使用堆分配,也总是删除堆分配是一种好习惯吗?

例如,这样做有什么意义吗?

int main(...)
{
    A* a = new A();
    a->DoSomething();
    delete a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想也许以防我重构(或其他人重构)代码并将其放在应用程序的其他地方,这delete真的是必要的.

除了Brian R. Bondy(其中特别谈到C++中的含义)的答案之外,Paul Tomblin 对C特定问题也有一个很好的答案,该问题也讨论了C++析构函数.

c++ heap memory-management dynamic

44
推荐指数
5
解决办法
2万
查看次数

如何编写和编译Amiga应用程序?

我想为Amiga编写一个应用程序,只是为了好玩!

请有人根据以下内容逐步发布howto吗?

  • 究竟我应该使用哪些编程工具,是否已经安装了?
  • 我是否仅限于纯文本编辑器,还是有IDE和调试工具可用?
  • 如果没有安装任何工具,这怎么办?有免费的吗?
  • 我想学习传统的Amiga语言,你能推荐一个吗?
  • 我应该用什么来编译你建议的语言?
  • 请问您可以建议我用来调试建议语言的工具吗?
  • 有没有我应该注意的库,比如GUI库?

有些事要注意......

  • 我正在WinUAE模拟器中运行Workbench 3.1.
  • 从Workbench,我可以从我的Windows硬盘访问文件.
  • 如果可能的话,我想从Workbench编写代码并编译它.
  • 我在A1200模式下运行WinUAE,不确定是否重要.
  • 已经安装了一个名为MEmacs的应用程序.
  • 我非常了解C++和C#,也许有类似的Amiga语言.
  • 我知道你可以用C和C++编写代码,但我想学习一门新语言.

更新:

我已经回答了我自己的问题,但在我打算扩展答案时,请提供更多答案.感谢迄今为止所做的一切,您一直非常乐于助人!

amiga

43
推荐指数
13
解决办法
1万
查看次数

什么是简单的C或C++ TCP服务器和客户端示例?

我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案.这只是简单地将字节数组从一台计算机传输到另一台计算机 - 不需要是可扩展的/过度复杂的.越简单越好.如果可以,快速而肮脏.

我尝试使用本教程中的代码,但我无法在Linux中使用g ++进行构建:http://www.linuxhowtos.org/C_C++/socket.htm

如果可能的话,我想避免使用第三方库,因为我运行它的系统非常有限.这必须是C或C++,因为现有的应用程序已经实现.

感谢emg-2的回答,我设法使用以下步骤使上述代码示例与C++兼容:

将这些标头添加到客户端和服务器:

#include <cstdlib>
#include <cstring>
#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)

server.c中,将clilen的类型更改为socklen_t.

int sockfd, newsockfd, portno/*, clilen*/;
socklen_t clilen;
Run Code Online (Sandbox Code Playgroud)

client.c中,更改以下行:

if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }
Run Code Online (Sandbox Code Playgroud)

至:

if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
Run Code Online (Sandbox Code Playgroud)

c++ tcp client-server

41
推荐指数
3
解决办法
13万
查看次数

CMake ... ccmake或cmake?

cmake和之间有什么区别ccmake?我安装了Ubuntu软件包cmake,在我的Windows计算机上,我有来自网站的安装程序,但都没有ccmake可用的命令.然而,这些教程似乎经常引用它.

似乎ccmake在Unix上是CMakeSetup在Windows上(这是安装程序).但我对它有点困惑; 它只是手动输入自己的CMakeLists.txt文件的替代方法吗?

cmake

38
推荐指数
4
解决办法
3万
查看次数

获取和设置函数是否受C++程序员的欢迎?

我原来是来自C#的世界,我正在学习C++.我一直想知道在C++中获取和设置函数.在C#中,这些使用非常流行,而像Visual Studio这样的工具通过使它们变得非常容易和快速实现来促进使用.但是,在C++世界中似乎并非如此.

这是C#2.0代码:

public class Foo
{
    private string bar;

    public string Bar
    {
        get { return bar; }
        set { bar = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,在C#3.0中:

public class Foo { get; set; }
Run Code Online (Sandbox Code Playgroud)

可能人们会说,那是什么意思呢?为什么不创建一个公共字段,然后在需要时将其变为属性; 老实说,我其实不确定.我只是出于好的做法,因为我已经看过很多次了.

现在因为我已经习惯了这样做,我觉得我应该把习惯延续到我的C++代码中,但这真的有必要吗?我没有像C#那样频繁地完成它.

无论如何,这是我收集的C++:

class Foo
{
public:
    std::string GetBar() const; // Thanks for the tip Earwicker.
    void SetBar(std::string bar);
private:
    std::string bar;
}

const std::string Foo::GetBar()
{
    return bar;
}

void Foo::SetBar(std::string bar)
{
    // Also, I always wonder if using 'this->' is good …
Run Code Online (Sandbox Code Playgroud)

c# c++ properties

34
推荐指数
6
解决办法
7万
查看次数

有可能以某种方式从Google Code迁移到Github吗?

我们有一个相当大的项目,我已经确定Google Code不符合预期.Github看起来是一个更合适的平台 - 但我觉得我们无法逃脱.这是手动迁移的情况吗?我们目前正在使用svn,所以我知道我们需要以某种方式转移到git - 考虑到我没有管理员访问我们的存储库,这是否可能?此外,我知道这是主观的,我不想开始圣战,但请评论你对谷歌代码与Github的感受.我们还应该考虑SourceForge吗?

google-code github

30
推荐指数
2
解决办法
4526
查看次数

我们可以在MS访问数据库上创建多列唯一索引吗?

我们希望使用多列唯一索引来防止MS访问数据库中的记录重复.由于数据的发送方式(通过网络),有时会收到重复数据.数据源不发送唯一ID,因此最简单的选项是防止插入重复记录.

根据独特指数设计指南:

使用多列唯一索引,索引可确保索引键中每个值组合都是唯一的.例如,如果在LastName,FirstName和MiddleName列的组合上创建唯一索引,则表中的任何两行都不能具有这些列的相同值组合.

这是针对SQL 2005的,所以我不确定是否可以使用MS访问.

我想另一种方法是使用查询(伪代码):

insert into foobar (a, b, c) values ('x', 'y', 'z')
where (a <> 'x') and (b <> 'y') and (c <> 'z')
Run Code Online (Sandbox Code Playgroud)

...但我觉得索引会更好.

ms-access database-design

29
推荐指数
2
解决办法
3万
查看次数

如何为.py文件将Emacs选项卡大小设置为4个字符宽?

我尝试过使用以下内容:

(setq-default tab-width 4)
(setq-default tab-stop-list (list 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60))
Run Code Online (Sandbox Code Playgroud)

但是编辑.py文件时标签的大小仍然是8个字符宽.在其他文件中,它已降至4,所以我认为Python主要模式以某种方式覆盖了这一点.我看到我可以将python-indent设置为4,但这会导致插入空格(这违反了我们的代码样式指南).

如何使标签4个宽度?

更新:

我也试过这个,但它没有做任何事情:

(add-hook 'python-mode-hook
  (setq indent-tabs-mode t)
  (setq tab-width 4)
)
Run Code Online (Sandbox Code Playgroud)

emacs

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

在C/C++中从TCP套接字读取的正确方法是什么?

这是我的代码:

// Not all headers are relevant to the code snippet.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <cstdlib>
#include <cstring>
#include <unistd.h>

char *buffer;
stringstream readStream;
bool readData = true;

while (readData)
{
    cout << "Receiving chunk... ";

    // Read a bit at a time, eventually "end" string will be received.
    bzero(buffer, BUFFER_SIZE);
    int readResult = read(socketFileDescriptor, buffer, BUFFER_SIZE);
    if (readResult < 0)
    {
        THROW_VIMRID_EX("Could not read from socket.");
    }

    // Concatenate the received data …
Run Code Online (Sandbox Code Playgroud)

c c++ tcp

25
推荐指数
3
解决办法
9万
查看次数

在文件大小和序列化/反序列化时间方面,JSON与XML相比如何?

由于带宽原因,我的应用程序在互联网上执行速度有点慢.我已经启用了GZip,它提高了下载时间,但我还在考虑是否可以从XML切换到JSON以便挤出最后一点性能.使用JSON会使邮件大小显着缩小,还是会略小一些?假设我们说的是250kB的XML数据(压缩到30kB).

xml json

23
推荐指数
3
解决办法
2万
查看次数