oka*_*ami 4 c++ string memory-leaks memory-management
void aFunction_2()
{
char* c = new char[10];
c = "abcefgh";
}
Run Code Online (Sandbox Code Playgroud)
问题:
将:c = "abdefgh"存储在new char[10]?
如果c = "abcdefgh"是另一个内存区域我应该解除它吗?
如果我想保存信息,char[10]我会使用一个函数strcpy来将信息放入char[10]?
void aFunction_2()
{
char* c = new char[10]; //OK
c = "abcefgh"; //Error, use strcpy or preferably use std::string
}
Run Code Online (Sandbox Code Playgroud)
1-请问:c ="abdefgh"是否在新char [10]内部分配?
不,您正在将指针从先前指向10个字节的内存位置更改为指向新的常量字符串,从而导致10个字节的内存泄漏.
2-如果c ="abcdefgh"是另一个内存区域,我应该解除它吗?
不,它没有在堆上分配,它在只读内存中
3-如果我想在char [10]内部保存信息,我会使用类似strcpy的函数将信息放在char [10]内部?
不确定你对'内在'的意思.当您使用new分配时,内存在堆中分配,并且在正常情况下,如果您提供指向内存块的指针,则可以从程序的任何部分访问.
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |