相关疑难解决方法(0)

Malloc调用崩溃,但在其他地方工作

我想知道是否有人可能对此有任何见解......

我的程序崩溃了这个电话:

void subtract(data* array,data* inverse,int a, int b, int q, int n)
{

data* arraytomultiply;
arraytomultiply = (data *)malloc(sizeof(data*) * n);
Run Code Online (Sandbox Code Playgroud)

数据只保存一个int(为了方便以后切换类型)

typedef struct { 
        int value;
}data;
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多改变这里的指针,因为我对它们完全没有信心,但无济于事.

奇怪的是,在程序的早期,同样的调用工作,我为它分配值,并可以打印出来和一切..:

data* array;
array = (data*)malloc(sizeof(data*) * m * n); // m * n entries
Run Code Online (Sandbox Code Playgroud)

可能有用的一件事(虽然我不知道为什么)是当它早期工作时它在一个void函数中,而当它崩溃时它在一个从算法中调用的函数中.但是我根本没有看到它会如何影响它,因为我正在尝试做的是不使用任何参数等...

有任何想法吗?

c crash malloc

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

我在做什么错-C指针

我已经定义了struct Node和createNode函数。

typedef struct {
    int r, c;
    int val;
    struct Node* down, *right;
} Node;

typedef Node* NodePointer;    

NodePointer createNode(int r,int c,int val) {
        NodePointer p = (NodePointer)malloc(sizeof(NodePointer));
        if (p != NULL) {
            p->r = r;
            p->c = c;
            p->val = val;
            p->down = p->right = NULL;
        }
        return p;
}
Run Code Online (Sandbox Code Playgroud)

然后当我尝试在主要功能中使用它时

int i = 0;
NodePointer* rows = (NodePointer*)malloc(50*sizeof(NodePointer));
for (i = 0; i < 20; i++) {        
    rows[i] = createNode(i,i+10,i*i);
}
Run Code Online (Sandbox Code Playgroud)

它引发了运行时错误,但是当我像这样更改for循环时(更改在for循环中-仅执行一次):

for (i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c pointers memory-management runtime-error dynamic-memory-allocation

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