标签: pointers

我该如何清除链表?

我一直在尝试编写一个最短路径算法,dijkstras算法,找到前两个顶点的最短路径工作正常.我在尝试清除链表和优先级队列时遇到了问题.

class llNode {
public:
    int id;
    int source;
    int weight;
    llNode* next;
    llNode(int key, int distance, int from) {
        id=key;
        weight=distance;
        source=from;
        next = NULL;
    }
};


class lList {
private:
    llNode* root;
    llNode* end;

    void clearAll(llNode* toClear);


public:
    lList() {
        root = NULL;
    }

    void add(llNode* toAdd) {
        if ( root == NULL) {
            root = toAdd;
            end = toAdd;
            return;
        }

        end->next = toAdd;
        end=end->next;
    }

    bool isFound(int key) {
        for(llNode* ii= root; ii != NULL ; …
Run Code Online (Sandbox Code Playgroud)

c++ pointers linked-list clear shortest-path

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

我应该使用哪种类型的指针?ptrdiff_t还是void*?

哪一行是定义指针​​的正确(最佳)方式?

typedef ptrdiff_t pointer; // pointers are ptrdiff_t.

          -- or --

typedef void* pointer; // pointers are void*.


pointer ptr = malloc(1024);
Run Code Online (Sandbox Code Playgroud)

c pointers c89

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

NSValue在释放时是否释放其价值?

看看这个伪代码:

void* magicpointer = malloc(OVER_NINE_THOUSAND);
NSValue* v = [NSValue valueWithPointer:magicpointer];
[v release];
Run Code Online (Sandbox Code Playgroud)

当v被释放时,magicpointer也会被释放,或者我必须手动执行吗?我正在使用手动引用计数.

pointers memory-management objective-c nsvalue

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

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

C++从函数,指针返回多维数组的最佳方法?

我需要从函数返回一个类对象数组.我从研究中了解到,最好的方法是使用指针,但这是我的程序设计的最佳方法,还需要从多个CPP文件中访问它?

main.cpp中

#include <class.h>
#include <functions.h>

int main(){
Class Object[2][]; //define second dimension here?
some_function(); //should return / create the array with filled in elements.
int var = arr[2][3]; // want to be able to do something like this in main
}
Run Code Online (Sandbox Code Playgroud)

functions.cpp

void some_function(){
// assign values
arr[2][3] = 1;
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers function

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

为什么这段代码有内存泄漏?

我检查了每一行,但找不到我忘记删除的地方.我在这个网站上找到AllocateDynamicArrayFreeDynamicArray编码,并认为它是正确的.我将尽快提供valgrind输出.任何帮助将不胜感激.

template <typename T>
T **AllocateDynamicArray(int nRows, int nCols) {
    T **dynamicArray;

    dynamicArray = new T*[nRows];
    for (int i = 0; i < nRows; i++) {
        dynamicArray[i] = new T [nCols];
        for (int j = 0; j < nCols; j++) {
            dynamicArray[i][j] = 0;
        }
    }
    return dynamicArray;
}


template <typename T>
void FreeDynamicArray(T** dArray, int nRows) {
    for (int i = 0; i < nRows; i++) {
        delete[] dArray[i];
    }
    delete[] dArray;
}

int main(int …
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-leaks dynamic

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

C++附加字符串指针

当我将Iterator附加到字符串时,我遇到了一些意外的字符串行为.基本上,我有一个文件,读取的内容如下:

int x := 10;
print x;
Run Code Online (Sandbox Code Playgroud)

我有一个字符串已经包含这个文件的内容,我正在迭代它,只是现在删除空格.

void Lexer::parse()
{
    Pointer = Filestring.begin(); // both private members
    while(Pointer < Filestring.end())
    {
        if(is_whitespace(0)) // 0 indicates current Pointer position
        {
            advance(Pointer, 1);
            continue;
        }

        CurToken.append(&*Pointer); // CurToken is private member string
        advance(Pointer, 1);
    }

    cout << CurToken << endl;
}
Run Code Online (Sandbox Code Playgroud)

在循环结束时,我希望CurToken是一个字符串,只包含删除了所有空格的字符.相反,我得到以下内容:

int x := 1 + 2;
print x;



nt x := 1 + 2;
print x;



t x := 1 + 2;
print x;
Run Code Online (Sandbox Code Playgroud)

...

rint x; …
Run Code Online (Sandbox Code Playgroud)

c++ string pointers iterator

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

是.net中的字符串得到改变?有一些错误吗?

我已经编写了一个函数Reverse来使用不安全上下文中的指针反转.net中的字符串.我喜欢这个.

我分配"问候"和"x"相同的值.我反向问候我的意外x也被逆转了.

using System;

class Test{

    private unsafe static void Reverse(string text){
        fixed(char* pStr = text){
            char* pBegin = pStr;
            char* pEnd = pStr + text.Length - 1;
            while(pBegin < pEnd){
                char t = *pBegin;
                *pBegin++ = *pEnd;
                *pEnd-- = t; 
            }
        }
    }

    public static void Main(){
        string greet = "Hello World";
        string x = "Hello World";
        Reverse(greet);
        Console.WriteLine(greet);
        Console.WriteLine(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net string pointers unsafe

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

编译时,C struct和pointer程序不执行任何操作.不显示错误或警告

我有这个代码,它不适合我.它不会给出任何错误或警告.所以我不知道它有什么问题.我对结构中的指针不太熟悉,我甚至不知道代码的那一部分是否导致它不能运行.

我已经使用了Code :: Blocks和DevC++来编译它,但它们都没有任何不同.

它有点长但它只有3个功能.根本没有任何东西可以打印到屏幕上.

#include <stdio.h>
#include <stdlib.h>

struct foo{
        int num;
        char *word;
        struct foo *ptr;
};
void func1(struct foo);
void func2(struct foo*);
void func3(struct foo);

int main() {
        struct foo a;
        a.num = 5;
        a.word ="myword";
        func1(a);
        printf("1 %d %s\n", a.num, a.word);

        a.num = 100;
        a.word = "secondword";
        func2(&a);
        printf("2 %d %s\n", a.num, a.word);

        a.ptr = &a;
        a.num = 50;
        a.word = "mylastword";
        func3(a);
        printf("4 %d %s\n", a.num, a.word);
}

void func1(struct foo a)
{
        while(*(a.word) != …
Run Code Online (Sandbox Code Playgroud)

c struct pointers

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

C++ - 使用向量清理堆上类的正确方法

我有这门课:

class GameData
{
public:
    GameData();
    ~GameData();
    vector<Bullet> bullets;
}
Run Code Online (Sandbox Code Playgroud)

在主程序中,我创建了一个GameData指针并为new分配内存.我知道新的,你也应该删除数据.我上面的矢量不是指向子弹的指针向量,只是子弹本身(它们应该是指针吗?)在~GameData()函数中,我需要清除子弹?我应该确定它是空的,如果不清楚的话?为了良好的内存管理,正确"删除"它的具体方法是什么?如果我的设计有误,请告诉我正确处理此问题的方法.

谢谢

c++ pointers vector

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