By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,778 Members | 2,015 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,778 IT Pros & Developers. It's quick & easy.

why this program is wrong on Tru64 OS ?

P: n/a
Hi,

When I run the program below on Tru64:

#include <string>

int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}
I get the next error:

Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)
These are the OS and compiler versions:

sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver
Thands in advance,
Jose Luis
Jul 22 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"jose luis fernandez diaz" <jo**********************@yahoo.es> wrote...
When I run the program below on Tru64:

#include <string>

int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}
I get the next error:
The program is not supposed to compile according to the rules
of the Standard C++ language. 'string' is supposed to be
declared in the 'std' namespace.

Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)
These are the OS and compiler versions:

sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver


OS-specific and compiler-specific behaviour cannot be explained from
the language standpoint, and this newsgroup deals with language only.
Perhaps you will find more information in a newsgroup dedicated to
your OS or your compiler.

IOW, there is nothing in the program itself (except the 'std::' thing)
that would suggest the alignment problems, and there is nothing in the
C++ language specification that would help solving your problem.

Oh, try declaring 'cad' as a pointer to _const_ char:

char const* cad = "hola";

(not that it should make much difference, though)

Victor

Jul 22 '05 #2

P: n/a
jo**********************@yahoo.es (jose luis fernandez diaz) wrote in message news:<c2**************************@posting.google. com>...
Hi,

When I run the program below on Tru64:

#include <string>

int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}
I get the next error:

Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)
These are the OS and compiler versions:

sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver
Thands in advance,
Jose Luis

I remember that we had this problem with a Compaq CXX: somehow he doesn't
get the types correctly. The following should fix your problem
(not the CXX bug:-):

string s1 = 1 ? std::string(cad, 0, 2) : std::string("");

In our source we are using the empty string first, but it shouldn't matter,
please let me know as I do no more have a CXX compiler available.

Regards, Stephan
Jul 22 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.