gpt4 book ai didi

c - 在C中为一维数组分配内存

转载 作者:行者123 更新时间:2023-12-02 01:05:45 25 4
gpt4 key购买 nike

我有一个关于创建动态数组的问题。

int *p; 
p = malloc( 3 * sizeof( int ) );

// initializes elements in the array
for ( int i = 0; i < 3; ++i ) {
*p++ = i * 4;
}

如何释放刚刚分配的内存?出于某种原因,我发现释放一个二维数组比一个 LOL 更容易。自从我上次使用 C 以来已经有一段时间了。

如果我执行以下操作:

free( p ); // will probably get an error. 

关于指针的另一件事。我试过这个:

int * p = malloc( sizeof( int ) );
*p = 4;

printf( "%d\n", *p ) // prints 4 as expected

free( p );
printf( "%d\n", *p ) // still prints the number 4!!!

free 函数应该释放 p 指向的内存块。 printf stills 怎么会打印出 4?

最佳答案

Malloc() 返回指向已分配 block 的指针。保留它以备将来使用 free()。使用整数索引您的数组或使用指针遍历它,但将原始地址存储在某处。

你可以这样做

int *p = malloc(3 * sizeof(int));
for( int i = 0; i < 3; i++)
p[i] = 4*i;
// .....
free(p);

int *p = malloc(3 * sizeof(int));
int *q = p;
for( int i = 0; i < 3; i++)
*q++ = 4*i;
// .....
free(p);

关于c - 在C中为一维数组分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22709997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com