我的C ++文件中是否可能发生内存泄漏?

杰普索米

我正在使用另一个C ++编码器为项目提供的示例代码。我是C ++语言的新学员,我想知道在给我(ClassmentHead.cpp)的此类文件中是否可能发生内存泄漏/错误:

#include "PlacementHead.h"
#include <string>
#include <iostream>
#include <string.h>

PlacementHead::PlacementHead(int width, int height, int gap, char* s) {
    width_ = width;
    height_ = height;
    gap_ = gap;
    size_ = (width*height)+1;
    set_ = new char[size_ + 1];
    from_ = new int[size_ + 1];
    original_ = new char[size_ + 1];
    strcpy(set_,s);
    strcpy(original_,s);
}

PlacementHead::~PlacementHead() {

}

int PlacementHead::getSize() { return size_; }
int PlacementHead::getHeight() { return height_; }
int PlacementHead::getWidth() { return width_; }
int PlacementHead::getGap() { return gap_; }

// Palauttaa indeksissä i olevan suuttimen
char PlacementHead::getNozzle(int i) {
    return set_[i-1];
}

// Asettaa indeksissä i olevan suuttimen
void PlacementHead::setNozzle(int i, char c) {
    set_[i-1] = c;
}

// Merkitsee suuttimen poimituksi poistamalla sen listasta
void PlacementHead::markNozzle(int i, int bankPos) {
    set_[i-1] = ' ';
    from_[i-1] = bankPos;
}

// Palauttaa seuraavan poimimattoman suuttimen indeksin
int PlacementHead::getNextUnmarkedPos() {
    for (int i=0; i<size_; i++) {
        if (set_[i]!=' ') {
            return i+1;
        }
    }
    return 0;
}

// Palauttaa suuttimen alkuperäisen sijainnin pankissa
int PlacementHead::getBankPos(int i) {
    return from_[i-1];
}

// Plauttaa alkuperäisen ladontapaan suutinjärjestyksen
void PlacementHead::reset() {
    //for (int i=0; i<size_; i++) {
    //  set_[i] = original_[i];
    //}
    strcpy(set_,original_);
}

// Tulostusmetodi
void PlacementHead::print() {
    std::cout << "ladontapaa:\n";
    for (int h=height_; h>0; h--) {
        for (int w=width_; w>0; w--) {
            int i = ((h-1)*width_)+w;
            std::cout << getNozzle(i);
        }
        std::cout << "\n";
    }
}

PlacementHead.h:

#ifndef PLACEMENTHEAD_H
#define PLACEMENTHEAD_H

class PlacementHead {
    public:
        PlacementHead(int size, int rows, int gap, char* s);
        ~PlacementHead();
        int getSize();
        int getHeight();
        int getWidth();
        int getGap();
        char getNozzle(int i);
        void setNozzle(int i, char c);
        void markNozzle(int i, int bankPos);
        int getNextUnmarkedPos();
        int getBankPos(int i);
        void reset();
        void print();
    private:
        char* set_;
        int* from_;
        char* original_;
        int size_;
        int width_;
        int height_;
        int gap_;
};

#endif

我注意到内存是动态分配的,但是我什么delete地方都看不到...这是问题吗?如果有问题,我该如何解决?

Thnx寻求任何帮助!

聚苯乙烯

我注意到class在此示例中没有使用关键字吗?...可以定义这样的类吗?

詹姆斯·坎泽

不看类定义(标题)就不可能说;如果size_等等类似boost::shared_array,或std::unique_ptr,则没有泄漏。如果它们只是简单的int*,则存在泄漏。

当然,没有C ++程序员会写这种代码。该类将包含std::vector<int>std::string从我们在这里看到的内容来看,作者并不了解C ++。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中实现A *时可能发生内存泄漏

来自分类Dev

在C ++中实现A *时可能发生内存泄漏

来自分类Dev

Java中是否可能发生内存泄漏?

来自分类Dev

以下C代码是否发生内存泄漏?

来自分类Dev

以下C代码是否发生内存泄漏?

来自分类Dev

通过FinalizerReference可能发生的内存泄漏

来自分类Dev

C中的文件内存泄漏

来自分类Dev

MediaElement在新媒体加载时是否可能发生内存泄漏?

来自分类Dev

使用指针算法进行迭代,是否可能发生内存泄漏?

来自分类Dev

我的哈希表C ++中的内存泄漏

来自分类Dev

会话超时0:可能发生内存泄漏?

来自分类Dev

使用AutomationElement类时可能发生内存泄漏

来自分类Dev

会话超时0:可能发生内存泄漏?

来自分类Dev

C#中简单批处理文件处理功能中可能的内存泄漏

来自分类Dev

通过C中的tokenise函数从malloc发生内存泄漏

来自分类Dev

通过C中的tokenise函数从malloc发生内存泄漏

来自分类Dev

我正在寻找处理期间可能发生的错误的列表

来自分类Dev

valgrind 是否可以在我从单独目录中的 C 可执行文件中使用的静态库中发现内存泄漏?

来自分类Dev

C中的内存泄漏

来自分类Dev

C#-属性中的new可能导致内存泄漏

来自分类Dev

C++ 在 COM DLL 中调用函数可能的内存泄漏

来自分类Dev

iOS + Delphi:内存不足警告-TTexture可能发生内存泄漏?

来自分类Dev

是否可以在不泄漏我的文件的情况下将密码保存在c ++文件中

来自分类Dev

我自己的pgsql C函数中的内存泄漏

来自分类Dev

我自己的pgsql C函数中的内存泄漏

来自分类Dev

此函数是否在C ++中造成内存泄漏?

来自分类Dev

内存泄漏读取文件到C中的链接列表

来自分类Dev

内存泄漏读取文件到C中的链接列表

来自分类Dev

R:删除ggplot2对象不会释放空间?可能发生内存泄漏?

Related 相关文章

  1. 1

    在C ++中实现A *时可能发生内存泄漏

  2. 2

    在C ++中实现A *时可能发生内存泄漏

  3. 3

    Java中是否可能发生内存泄漏?

  4. 4

    以下C代码是否发生内存泄漏?

  5. 5

    以下C代码是否发生内存泄漏?

  6. 6

    通过FinalizerReference可能发生的内存泄漏

  7. 7

    C中的文件内存泄漏

  8. 8

    MediaElement在新媒体加载时是否可能发生内存泄漏?

  9. 9

    使用指针算法进行迭代,是否可能发生内存泄漏?

  10. 10

    我的哈希表C ++中的内存泄漏

  11. 11

    会话超时0:可能发生内存泄漏?

  12. 12

    使用AutomationElement类时可能发生内存泄漏

  13. 13

    会话超时0:可能发生内存泄漏?

  14. 14

    C#中简单批处理文件处理功能中可能的内存泄漏

  15. 15

    通过C中的tokenise函数从malloc发生内存泄漏

  16. 16

    通过C中的tokenise函数从malloc发生内存泄漏

  17. 17

    我正在寻找处理期间可能发生的错误的列表

  18. 18

    valgrind 是否可以在我从单独目录中的 C 可执行文件中使用的静态库中发现内存泄漏?

  19. 19

    C中的内存泄漏

  20. 20

    C#-属性中的new可能导致内存泄漏

  21. 21

    C++ 在 COM DLL 中调用函数可能的内存泄漏

  22. 22

    iOS + Delphi:内存不足警告-TTexture可能发生内存泄漏?

  23. 23

    是否可以在不泄漏我的文件的情况下将密码保存在c ++文件中

  24. 24

    我自己的pgsql C函数中的内存泄漏

  25. 25

    我自己的pgsql C函数中的内存泄漏

  26. 26

    此函数是否在C ++中造成内存泄漏?

  27. 27

    内存泄漏读取文件到C中的链接列表

  28. 28

    内存泄漏读取文件到C中的链接列表

  29. 29

    R:删除ggplot2对象不会释放空间?可能发生内存泄漏?

热门标签

归档