指针开辟空间后重新赋值
时间: 2023-07-20 12:19:18 浏览: 87
当我们使用指针动态开辟空间后,我们可以通过重新给指针赋值的方式来改变指针所指向的内存空间。例如,假设我们使用下面的代码动态开辟了一块内存空间:
```
int *ptr = new int[10];
```
此时,`ptr`指向了一块长度为10的整型数组。如果我们想要释放这块内存空间,并重新开辟一块长度为5的整型数组,可以使用下面的代码:
```
delete[] ptr;
ptr = new int[5];
```
这样,`ptr`就指向了一块长度为5的整型数组。需要注意的是,在重新给指针赋值之前,一定要先释放原来指针所指向的内存空间,否则会造成内存泄漏。
相关问题
c语言开辟内存之前给指针赋值为空是为什么
在C语言中,给指针赋值为空,即NULL或0,是为了避免野指针的出现。野指针是指指向未知地址或未分配内存空间的指针,如果程序试图访问该地址,就会导致程序崩溃或出现不可预知的结果。
在开辟内存之前,给指针赋值为空可以确保指针指向了一个无效地址,如果程序试图访问该地址,就会出现错误提示,而不是崩溃或出现不可预知的结果。此外,给指针赋值为空也可以提醒程序员需要对指针进行初始化,避免出现未初始化的指针。
char * 变量a,使用malloc开辟空间,我后面对a赋值要考虑加上结束符嘛?
是的,当你使用 `malloc` 函数在堆内存中分配一段空间后,你需要手动为这段内存赋值,包括结束符 '\0'。否则,当你使用这段内存时,程序会继续向后读取,直到遇到 '\0' 才会停止。如果没有 '\0',程序就会一直读取内存直到出现错误或崩溃。
所以,在使用 `malloc` 函数分配内存后,你需要为这段内存赋值,并确保最后一个字符是 '\0'。例如,如果你要为 `char` 类型的指针变量 `a` 分配 10 字节的内存空间,你可以这样做:
```c
char *a = (char *)malloc(10 * sizeof(char));
a[0] = 'H';
a[1] = 'e';
a[2] = 'l';
a[3] = 'l';
a[4] = 'o';
a[5] = '\0'; // 加上结束符
```
这样,你就为 `a` 分配了 10 字节的内存空间,并将其赋值为 "Hello",并且最后一个字符是 '\0'。
阅读全文