标签: malloc

C++简单的malloc和sizeof

我用这两条简单的线条得到了一个奇怪的结果

char* reverse = (char*) malloc(sizeof(char)*19);
cout << sizeof(reverse)/sizeof(char) << endl;
Run Code Online (Sandbox Code Playgroud)

无论我放在第一行的数字(在这个例子中,它是19).我总是得到4作为输出.怎么了 ?谢谢.

c++ malloc sizeof

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

使用malloc(C89)初始化main()之外的结构

我正在尝试在C中实现双向链表,我需要使用初始化函数,同时保持一个大小字段.我的代码如下:

typedef struct element{
    struct element* next;
    struct element* prev;
    int value;
}element_t;

typedef struct linkedlist{
    element_t* head;
    element_t* tail;
    int size;
}linkedlist;

void init(linkedlist* list){
    list = malloc(sizeof(linkedlist));
    list->size = 0;
}

int main(int argc, char** argv){
    linkedlist* list;
    init(list);
    return 0;
Run Code Online (Sandbox Code Playgroud)

当我尝试在init函数中访问list-> size时,我得到正确的值,但是当我尝试从main访问list-> size时,程序返回一个奇怪的,大的负值(可能是十六进制的地址) .

想知道我做错了什么.stdlib包括在内.

c malloc linked-list

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

为什么在使用"free()"之后,内存地址的值总是为0?

我有这个代码:

int * m = (int *)malloc(sizeof(int));
printf("%p %i\n", m, *m);
(*m) = 6;
printf("%p %i\n", m, *m);
free(m);
printf("%p %i\n", m, *m);
Run Code Online (Sandbox Code Playgroud)

我在Linux上运行它.为什么内存地址的值始终为0?

为什么我在Windows上运行它会改变这个值?

c malloc free

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

malloc无法分配内存

我正在写一个C代码来解决欧拉方程.我的代码在集群上工作得很好,但在我的电脑上却没有.似乎是malloc()的一个问题.它无法分配请求的内存并失败.

我如何使它工作?它是否与碎片整理有关?但系统设置显示(0%碎片整理).

在这里只包含一部分malloc()代码.

double **u, **rho_u, **rho,    
int Size = 1000;
u = (double**)malloc(Size*sizeof(double*));
for(i=0;i<=Size;i++)
    u[i] = (double*)malloc(Size*sizeof(double));

rho_u = (double**)malloc(Size*sizeof(double*));
for(i=0;i<=Size;i++)
    rho_u[i] = (double*)malloc(Size*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

c malloc defragmentation

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

我应该在 C++ 中始终使用 new 运算符而不是 malloc 函数吗?

struct A
{
 string st;
};

int main()
{
 A *a = (A *)malloc(sizeof(A));
 a->st = "print";

 cout << a->st;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用这种方式并成功编译时,但之后在运行时出现异常。所以,我发现一件事是A *a = new A;代替A *a = (A *)malloc(sizeof(A));。做这种事情哪种方法更好而且不会出错?

运行时内存分配应该怎么做?

c++ malloc new-operator

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

带C的动态内存

struct forcePin {
    char _name[512];
};

struct forcePin *_forcePin[500000];    
_forcePin[i] = (struct forcePin *) malloc (sizeof (struct forcePin));
Run Code Online (Sandbox Code Playgroud)

我可以知道如下所示的线路在做什么?

_forcePin[i] = (struct forcePin *) malloc (sizeof (struct forcePin));
Run Code Online (Sandbox Code Playgroud)

我不熟悉c,如果你能告诉我如何使这一行也是C++格式的.谢谢

c malloc

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

为什么malloc在这里引起内存损坏?

我不断收到以下错误:

*** Error in `./vice': malloc(): memory corruption: 0x08e77530 ***
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

相关代码为:

open_result *
open_file_1_svc(open_args *argp, struct svc_req *rqstp)
{
    static open_result  result;
    int obtained_fd;
    int just_read;
    int total_read = 0;
    int max_bytes_read = 1024;
    char *ptr_file;
    char *pathName = "MyFiles/"; // strlen = 8
    int toReserve;

    xdr_free((xdrproc_t)xdr_open_result, (char *)&result);

    // Construct full name of the file (in "MyFiles")
    toReserve = strlen(argp->fname) + strlen(pathName) + 1; // "\0"
    char *fullName = malloc(toReserve*sizeof(char));
    fullName = strdup(pathName);
    fullName = strcat(fullName, …
Run Code Online (Sandbox Code Playgroud)

c malloc rpc memory-management memory-corruption

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

你将如何释放分配的内存?

我需要释放一些在程序中分配的内存.我需要时可以用东西清理内存吗?

#include<stdio.h>
#include<stdlib.h>
#define MAXROW 3
#define MAXCOL 4

int main()
{
    int **p, i, j;
    p = (int **) malloc(MAXROW * sizeof(int*));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c malloc

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

使用free()无法释放内存

getFree()我在一个类似问题的答案之一中看到它的功能,但是字符串cpy仍然具有第一次给出的相同字符串它运行的次数,即T次.所以,有人请帮忙.

void getFree(char ** ptr) {
    if (*ptr != NULL) {
        free(*ptr);
    }
    return;
}

int main() {
    int T, j;
    scanf("%d", &T);
    for (j = 0; j < T; j++) {
        char * cpy,
        int count = 0, i = 0, x = 0, k = 0;
        cpy = (char*)malloc(500 * sizeof(char));
        if (getchar() == '\n') {
            do {
                *(cpy + i) = getchar();
                i++;
            } while(*(cpy + i - 1) != '\n');
        }
        getFree(&cpy); 
        printf("%s", …
Run Code Online (Sandbox Code Playgroud)

c string malloc free

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

为什么在malloc中使用sizeof?

在IDEONE上执行此代码时:

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

struct A{
    int x;
    char c;
};

struct B{
    int y;
};

int main(void) {
    // your code goes here
    struct A* pa = malloc(sizeof(struct B));
    printf("%d\n",sizeof(*pa));
    pa = malloc(sizeof(int));
    printf("%d\n",sizeof(*pa));
    pa = malloc(sizeof(char));
    printf("%d\n",sizeof(*pa));
    pa = malloc(0);
    printf("%d\n",sizeof(*pa));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有:

8
8
8
8
Run Code Online (Sandbox Code Playgroud)

我猜测因为pa是类型struct A *并且struct A是8字节长,然后malloc分配8个字节,因为它应该,但如果是这样,为什么使用sizeof?

c malloc sizeof

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