在C++中使用char的新运算符

use*_*124 3 c++ char

为什么这段代码不起作用?它抛出运行时错误,没有编译器错误或警告.

 int main(void) {

    char *korisnik = new char[20];
    korisnik = "Bizuterija";
    *(korisnik+1) = 'h'; // error here!
    cout << korisnik << endl;

    delete[] korisnik;


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 16

korisnik = "Bizuterija";
Run Code Online (Sandbox Code Playgroud)

此行替换了您无法修改的可执行文件的数据段中存储korisnik和分配new的地址,因为它是字符串文字.你实际上在这里创建了内存泄漏.

尝试将字符串的内容复制到指向的内存中:

strncpy(korisnik, "Bizuterija", 20);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,既然你使用C++,你一定要使用std::string.


dut*_*utt 6

我建议切换到std :: string,因为你正在使用c ++.

#include <string>
#include <iostream>
int main(int argc, char** argv) {
    std::string korisnik = "Bizuterija";
    korisnik[1] = 'h';
    std::cout <<korisnik <<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)