【发布时间】:2014-03-28 10:20:13
【问题描述】:
我有一个关于创建动态数组的问题。
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呢?
【问题讨论】:
-
你可以免费使用(p);它不应该失败
-
+1 表示不转换
malloc的返回值。 -
我没有转换 malloc 的返回值,因为我使用的是 C99。
标签: c